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