繁体   English   中英

通过读取 TSV 文件并将读取的值作为参数插入文本行中,使用 bash 输出几行相似的文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM