在awk命令中使用变量来命名文件

时间:2015-10-15 19:15:41

标签: shell awk ksh

我正在使用awk命令拆分文件,我想使用变量命名文件但是我运气不好。这是一行:

awk '/STX/ {f="$tp"++i;} {print > f}' $tp.mixed

这只是创建$ tp#作为名称的文件。

我阅读了帖子“如何在awk脚本中使用shell变量”,但无法弄清楚如何将这个应用于我的问题。

2 个答案:

答案 0 :(得分:3)

您可以使用此awk命令从命令行传递变量:

awk -v tp="$tp" '/STX/{close(f); f=tp (++i)} f{print > f} END{close(f)}' "$tp.mixed"

同样重要的是关闭您打开输出的文件。通过调用close,我们可以避免因大量打开的文件而导致内存泄漏。

答案 1 :(得分:0)

anubhava在评论中回答了我的问题:

awk -v tp="$tp" '/STX/ {if (f) close(f); f = tp (++i)} {print > f} END{if (f) close(f)}' $tp.mixed

工作

谢谢大家的帮助