如何用awk替换特定列的内容?制表符分隔文件

如何用awk替换特定列的内容?制表符分隔文件

这是一个类似的问题,但我遇到了问题中未解决的问题。 如何用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默认情况下使用单个空格作为字段分隔符。

相关内容