我正在使用以下命令通过前两列来合并两个文件。
awk 'NR==FNR{a[$1,$2]=substr($0,3);next} ($1,$2) in a{print $0, a[$1,$2] > "br0102_3.txt"}' br01.txt br02.txt
现在,默认情况下,AWk命令使用空格作为分隔符。但是我的文件中可能会包含两个单词之间的单个空格,例如:文件1:
ABCD TEXT1 TEXT2 123123112312312312312312312312312312
BCDEFG TEXT3TEXT4 133123123123123123123123123125423423
QWERT TEXT5TEXT6 123123123123125456678786789698758567
第二个文件:
ABCD TEXT1 TEXT2 12312312312312312312312312312
BCDEFG TEXT3TEXT4 31242342342342342342342342343
MNHT TEXT8 TEXT9 31242342342342342342342342343
我希望将结果文件设为:
ABCD TEXT1 TEXT2 123123112312312312312312312312312312 12312312312312312312312312312
BCDEFG TEXT3TEXT4 133123123123123123123123123125423423 31242342342342342342342342343
QWERT TEXT5TEXT6 123123123123125456678786789698758567
MNHT TEXT8 TEXT9 31242342342342342342342342343
有什么提示吗?
awk -F '[[:space:]][[:space:]]+' 'NR==FNR{a[$1,$2]=$3;next} ($1,$2) in a{print $0, a[$1,$2] > "br0102_4.txt"}' br01.txt br02.txt
。但是,在连接两个文件的记录之间,对于任何一行,我看到一个换行符LF字符,有没有避免这种情况的提示?因此,连接的行被拆分成两行。 - Apurvprint $0, a[$1,$2]
应该输出第二个文件的行,后跟OFS
(默认为空格),然后是a[$1,$2]
的值,后跟ORS
(默认为换行符)。你的第一个输入文件可能是 DOS 换行符文件吗? - Etan Reisner