如何用awk替换特定列的内容?

Mar*_*ton 45 linux awk text-processing replace

鉴于:记录中有 40 列。我想替换第 35 列,以便将第 35 列替换为第 35 列的内容和“$”符号。想到的是这样的:

awk '{print $1" "$2" "...$35"$ "$36...$40}'
Run Code Online (Sandbox Code Playgroud)

它可以工作,但是因为当列数大到 10k 时它是不可行的。我需要一个更好的方法来做到这一点。

cuo*_*glm 48

你可以这样做:

awk '$35=$35"$"'
Run Code Online (Sandbox Code Playgroud)


jas*_*yan 16

可能有更有效的方法来做到这一点。有这个警告:

awk '{$35 = $35"$"; print}' infile > outfile
Run Code Online (Sandbox Code Playgroud)


z a*_*tef 7

为了保留原来的 Field-Seprator,我这样做了。我想删掉的那一栏是 12 美元。

awk -F"\t" '{OFS=FS}{ $12="" ; print   }' infile.txt > outfile.txt
Run Code Online (Sandbox Code Playgroud)

使用gawk -i,如果您拥有它,您可以就地编辑文件。