AWK使用多个空格作为分隔符

Apu*_*urv 14 unix awk

我使用下面的命令使用前两列连接两个文件.

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
Run Code Online (Sandbox Code Playgroud)

现在,默认情况下,AWk命令使用空格作为分隔符.但我的文件可能包含两个单词之间的单个空格,例如

档案1:

ABCD               TEXT1 TEXT2                     123123112312312312312312312312312312
BCDEFG             TEXT3TEXT4                      133123123123123123123123123125423423
QWERT              TEXT5TEXT6                      123123123123125456678786789698758567
Run Code Online (Sandbox Code Playgroud)

文件2:

ABCD               TEXT1 TEXT2                     12312312312312312312312312312
BCDEFG             TEXT3TEXT4                      31242342342342342342342342343
MNHT               TEXT8 TEXT9                     31242342342342342342342342343
Run Code Online (Sandbox Code Playgroud)

我希望结果文件为;

ABCD               TEXT1 TEXT2                     123123112312312312312312312312312312 12312312312312312312312312312
BCDEFG             TEXT3TEXT4                      133123123123123123123123123125423423 31242342342342342342342342343
QWERT              TEXT5TEXT6                      123123123123125456678786789698758567
MNHT               TEXT8 TEXT9                     31242342342342342342342342343
Run Code Online (Sandbox Code Playgroud)

任何提示?

Eta*_*ner 28

awk支持正则表达式作为值,FS因此您可以指定匹配至少两个空格的正则表达式.有点像-F '[[:space:]][[:space:]]+'.

$ awk '{print NF}' File2
4
3
4

$ awk -F '[[:space:]][[:space:]]+' '{print NF}' File2
3
3
3
Run Code Online (Sandbox Code Playgroud)