31 给定:一条记录中有40列。我想替换第35列,以便将第35列替换为第35列的内容和“ $”符号。我想到的是: awk '{print $1" "$2" "...$35"$ "$36...$40}' 它可以工作,但是因为当列数最大为10k时不可行。我需要一个更好的方法来做到这一点。 linux text-processing awk replace — 马库斯·桑顿 source
3 如果字段定界符为<space>: sed 's/ */$&/35' — 麦克维 source 如果字段定界符未知:sed 's/./$&/35' — 2015年 @Underverse-我不认为这是同一回事。那应该在输入行上第35个字符加前缀字符$-是否定界。上面的内容应该将第35个出现的定界符char固定在第35个字段上,换句话说,第35个字段与char固定在一起,$无论每个字段中的char 如何。 — mikeserv 啊,“记录中有40列”。我将“第35列”读为“文本文件的第35个字符列”。 — 2015年
3 为了保留原始的“现场分隔符”,我这样做了。我想清空的列是数字$ 12。 awk -F"\t" '{OFS=FS}{ $12="" ; print }' infile.txt > outfile.txt 使用gawk -i,如果有,您可以在适当的位置编辑文件。 — e source
1 如果使用“批准的”答案有问题,它将取代文件中的仅第一列。我使用以下通用命令: awk '$[column]="[replace]"' FS=, OFS=, inputfile > outputfile 哪里: [column] =要更改的列,从1(非0)开始 [replace] =您要替换的文字 — 杰森·G source awk '$1=mktime($1)' FS=, OFS=, oldfile > newfile ...在几秒钟内替换了一百万个时间戳!!:) — roblogic
sed 's/./$&/35'