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

Using a variable in awk command to name file

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

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

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

我阅读了 post "How to use shell variables in awk script" 但无法弄清楚如何将其应用于我的问题。

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

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

有效

谢谢大家的帮助

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

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

同样重要的是关闭您为写入输出而打开的文件。通过调用 close,我们避免了由于打开大量文件而导致的内存泄漏。