以下awk
将target.txt与out_parse.txt组合在一起,输出为GJ-53.txt。如果out_parse中有多行,它们如何写入GJ-53.txt?截至目前,out_parse
的第一行保存到文本文件GJ-53
,但第二行没有。{比你:)。
awk '{close(fname)} (getline fname<f)>0 {print>fname}' f=target.txt out_parse.txt
out_parse.txt的内容
13 20763612 20763612 C T
13 20763620 20763620 A G
target.txt的内容
GJ-53.txt
cat -v out_parse.txt
13 20763612 20763612 C T
13 20763620 20763620 A G
答案 0 :(得分:2)
如果我理解正确,您希望将out_parse.txt
的内容复制到新文件,该文件的名称在文件target.txt
中给出。要做到这一点,你根本不需要使用awk:
cp out_parse.txt "$(< target.txt)"
在bash中,$(< file)
可用作file
内容的替代。它实现了与$(cat file)
相同的功能。
如果你想使用awk,你可以这样做:
awk 'NR==FNR{f=$0;next}{print>f}' target.txt out_parse.txt
第一个块适用于第一个文件,其中总记录号NR
等于当前文件的记录号FNR
。它将行的内容(即文件名)保存到f
并跳过任何进一步的指令。第二个块仅适用于第二个文件,并将每一行打印到f
中保存的文件名。