在 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
,我们避免了由于打开大量文件而导致的内存泄漏。
我正在用 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
,我们避免了由于打开大量文件而导致的内存泄漏。