[英]Using bash to output several similar lines of text by reading a TSV file and inserting the read values as argument in the text line
我目前正在尝试使用 TSV 文件根据函数调用中给出的模板行生成代码行。 这是一个例子
TSV 文件(values.tsv):
Title_1 <\t> Body_1 <\t> Footer_1
Title_2 <\t> Body_2 <\t> Footer_2
Title_3 <\t> Body_3 <\t> Footer_3
重击调用:
cmd values.tsv "\card{$1}{$2}{$3}"
期望输出:
\card{Title_1}{Body_1}{Footer_1}
\card{Title_2}{Body_2}{Footer_2}
\card{Title_3}{Body_3}{Footer_3}
我目前有一个使用硬编码方法执行此示例的函数,但我想要一个更通用的函数,该函数可以根据上面给出的语法将 TSV 值插入到预设的代码行中。 这里是硬编码的函数供参考
card_basic()
{
input=$1
while IFS=$'\t' read -r -a cell
do
echo -n "\\card{${cell[0]}}{"
for x in "${cell[@]:1}"
do
echo -n "$x"
done
echo "}{}"
done < "$input"
}
你的方法似乎倒退了。 尝试这个。
awk -F '\t' '{ printf "\\card{%s}{%s}{%s}\n", $1, $2, $3 }' values.tsv
我想如果您愿意,您可以将格式字符串作为变量传递,尽管考虑到 Awk 脚本包含的其他内容很少,这看起来确实是不必要的复杂化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.