保存命令输出文件名

时间:2016-06-03 10:48:54

标签: bash awk grep

我遇到了这个问题,我希望将命令的输出保存为文件名,并将来自不同命令(在同一脚本中)的输出流输出到该文件。我无法在线找到解决方案,所以现在就去了。以下是我的代码:

zgrep --no-filename 'some-patter\|other-pattern' /var/something/something/$1/* | awk -F '\t' '{printf $8; printf "scriptLINEbreakerPARSE"; print $27}' | while read -r line ; do
    awk -F 'scriptLINEbreakerPARSE' '{print $1}' -> save output of this as a filename
    awk -F 'scriptLINEbreakerPARSE' '{print $2}' >> the_filename_from_above
done

所以基本上我想使用循环中的第一个awk将输出保存为文件名,然后第二个awk输出将保存到具有该文件名的文件。

任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

你做的太多了。只需在第一个awk命令中输出到所需的文件:

zgrep --no-filename 'some-patter\|other-pattern' /var/something/something/$1/* |
  awk -F '\t' '{printf $27 > $8}'

请参阅https://www.gnu.org/software/gawk/manual/html_node/Redirection.html