用字符替换特定列中的空格

NEH*_*ARY 3 awk sed

我有格式的数据

A  ((!(A1+A2)))
B  (A1+A2)
C  (A1 A2)
D  (!(A1 A2) B1)
E  (!A1+!A2)
F  ((A1+A2) A3 A4)
G  ((A1 A2)+(A3 A4))
Run Code Online (Sandbox Code Playgroud)

我想输出为

A  ((!(A1+A2)))
B  (A1+A2)
C  (A1&A2)
D  (!(A1&A2)&B1
E  (!A1+!A2)
F  ((A1+A2)&A3&A4)
G  ((A1&A2)+(A3&A4))
Run Code Online (Sandbox Code Playgroud)

因此,每当 column2 中有空间时,我都希望将其替换为& 我尝试过的

sed 's/ /&/2' file
Run Code Online (Sandbox Code Playgroud)

但是没有变化我也试过了

awk -F' ' '{if($2==" ")$2="&";}1' file
Run Code Online (Sandbox Code Playgroud)

这也没有改变只取回输入文件。

anu*_*ava 6

您可以将其awk与 2 个空格一起用作输入/输出字段分隔符:

awk 'BEGIN {FS=OFS="  "} {gsub(/ +/, "\\&", $2)} 1' file

A  ((!(A1+A2)))
B  (A1+A2)
C  (A1&A2)
D  (!(A1&A2)&B1)
E  (!A1+!A2)
F  ((A1+A2)&A3&A4)
G  ((A1&A2)+(A3&A4))
Run Code Online (Sandbox Code Playgroud)