Bash awk将文件中的所有行与另一行合并
下面的Bash awk将文件中的所有行与另一行合并,bash,awk,Bash,Awk,下面的awk将target.txt与out_parse.txt结合起来,输出为GJ-53.txt。如果有多行输入输出解析,如何将它们都写入GJ-53.txt?现在,out\u parse的第一行保存到文本文件GJ-53,但第二行没有。比你多:) target.txt的内容 13 20763612 20763612 C T 13 20763620 20763620 A G GJ-53.txt cat -v out_parse.txt 13 20
awk
将target.txt与out_parse.txt结合起来,输出为GJ-53.txt。如果有多行输入输出解析,如何将它们都写入GJ-53.txt?现在,out\u parse
的第一行保存到文本文件GJ-53
,但第二行没有。比你多:)
target.txt的内容
13 20763612 20763612 C T
13 20763620 20763620 A G
GJ-53.txt
cat -v out_parse.txt
13 20763612 20763612 C T
13 20763620 20763620 A G
如果我理解正确,您希望将
out_parse.txt
的内容复制到一个新文件中,该文件的名称在文件target.txt
中给出。要做到这一点,您根本不需要使用awk:
cp out_parse.txt "$(< target.txt)"
第一个块适用于第一个文件,其中总记录号
NR
等于当前文件的记录号FNR
。它将行的内容(即文件名)保存到f
,并跳过任何进一步的说明。第二个块仅适用于第二个文件,并将每一行打印到保存在f
中的文件名。请说明我希望如何查看最终文件(GJ-53.txt)。与out_parse.txt相同?是否有任何理由使用awk
而只是复制cp out_parse.txt$(head-1 target.txt)
请解释您正在尝试做什么(而不是如何尝试做),因为编写的脚本毫无意义,因此我们很难帮助您,因为我们无法确定您实际希望脚本做什么。此外,在我们进一步讨论之前,请在您的文件上运行cat-v
,查看它们是否包含任何控件Ms,如果是,请删除带有dos2unix
或类似控件的控件Ms。关于您的脚本:应该打印{print>fname}
如果getline
将接收带有一些数字的数据(getline fname0
但是只有一行在target.txt
中。所以当脚本操作第二行时,getline
没有收到任何内容,所以只会打印第一行我根据建议计算出来:)
cp out_parse.txt "$(< target.txt)"
awk 'NR==FNR{f=$0;next}{print>f}' target.txt out_parse.txt