假设:一条记录有 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]
= 您要替换的文本