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

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

假设:一条记录​​有 40 列。我想替换第35列,这样第35列就会被替换为第35列的内容和一个“$”符号。我想到的是这样的:

awk '{print $1" "$2" "...$35"$ "$36...$40}'

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

答案1

你可以这样做:

awk '$35=$35"$"'

答案2

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

awk '{$35 = $35"$"; print}' infile > outfile

答案3

为了保留原来的字段分离器,我这样做了。我想要空白的栏目是 12 美元。

awk -F"\t" '{OFS=FS}{ $12="" ; print   }' infile.txt > outfile.txt

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

答案4

使用“已批准”答案时出现问题,它将不仅仅替换文件中的第一列。我使用这个通用命令:

awk '$[column]="[replace]"' FS=, OFS=, inputfile > outputfile

在哪里:

  • [column]= 您要更改的列,从 1(而不是 0)开始
  • [replace]= 您要替换的文本

相关内容