用于“添加列”的标准 Unix 工具是 paste。
如果您的脚本为 textfile.csv 中的每一行输入生成一行输出,您可以将文件并排粘贴在一起,如下所示:
perl myscript.pl > tmpfile.csv
paste -d , textfile.csv tmpfile.csv > new_textfile.csv
或者您可以通过使用管道来一步完成(省略临时文件):
perl myscript.pl | paste -d , textfile.csv - > new_textfile.csv
如果您的脚本仅对输入的第 2 列和第 3 列进行操作,并且不知道如何忽略第 1 列,您可以提取第 2 列和第 3 列以输入到您的脚本中:
awk -F, '{print $2, $3}' textfile.csv | perl myscript.pl | ...
(但请注意,使用 -F, 调用的 awk 不是一个完全通用的 CSV 解析器,并且不会处理引用。)
最后,如果您的脚本的每次调用只知道如何对一对数字进行操作(即,对来自textfile.csv 的一行输入),您可以使用循环,如下所示:
cp /dev/null tmpfile.csv
awk -F, '{print $2, $3}' textfile.csv | while read col2 col3
do
perl myscript.pl $col2 $col3 >> tmpfile.csv
done
paste -d , textfile.csv tmpfile.csv > new_textfile.csv
或者你可以看中并重定向循环的输出:
awk -F, '{print $2, $3}' textfile.csv | while read col2 col3
do
perl myscript.pl $col2 $col3
done > tmpfile.csv
paste -d , textfile.csv tmpfile.csv > new_textfile.csv
或者如果你真的想成为一名牛仔:
awk -F, '{print $2, $3}' textfile.csv | while read col2 col3
do
perl myscript.pl $col2 $col3
done | paste -d , textfile.csv - > new_textfile.csv