我正在学习awk,我想在几列中替换空格来替换它:
X X X X X X X X LA CROIX-HELLEAN X X
with:
X X X X X X X X LA_CROIX-HELLEAN X X
所以我试过了:
awk '{for(i=j=9; i < NF; i+=1) if ($9=="LA") {$j = $i"_"$(i+1); j++} NF=j-1}1' file.txt > newfile.txt
但结果只是保留修改后的线条,我也想要未经修改的线条......
感谢您的帮助!
答案 0 :(得分:0)
以下将合并字段9和10 ...
$ldaprdn = "xxx\\{$username}";
如果你的某些行不需要合并,那么它们可能有错误的字段数:
$ldaprdn = "xxx\\$username";
或者,如果您的某些awk '{$9=$9"_"$10; for(i=10;i<NF;i++) $i=$(i+1); NF-- } 1'
字段包含多个空格,您可能需要更开放的缩减:
$ s=$'X X X X X X X X LA CROIX-HELLEAN X X\nX X X X X X X X TORONTO X X'
$ awk 'NF==12 {$9=$9"_"$10; for(i=10;i<NF;i++) $i=$(i+1); NF-- } 1' <<< "$s"
X X X X X X X X LA_CROIX-HELLEAN X X
X X X X X X X X TORONTO X X