这是一个类似的问题,但我遇到了问题中未解决的问题。 如何用awk替换特定列的内容?
我想做类似的事情,但是我的文件是制表符分隔而不是空格分隔。我想更改字段 3。假设我的文件如下所示:
NAME\tNUMBER\tID\tSEQ\t...\t...\t...
假设我想将字段 3 更改为 AD
awk '{$3 = "AD"; print}' infile > outfile
我的输出是
NAME\tNUMBER\tAD SEQ ... ... ... ... ... ...
我的制表符在替换后变成空格我确信我只能tr
输出文件,但我想知道是什么原因awk
导致更改字段分隔符。
预期输出:
NAME\tNUMBER\tAD\tSEQ\t...\t...\t...\t
答案1
您需要将O
输出F
字段S
分隔符设置为 tab \t
:
一种方法是使用-v
选项:
awk -vOFS='\t' '{$3 = "AD"; print}' file
内部的另一种可能性awk
,比如在 BEGIN 块中:
awk 'BEGIN{OFS="\t"}{$3 = "AD"; print}' file
如果您未设置OFS
,则awk
默认情况下使用单个空格作为字段分隔符。