如何使awk gsub返回制表符分隔的行?

Séb*_*ent 4 awk tabs spaces separator gsub

我使用awk gsub替换制表符分隔文件的特定列中的字符串:

cat test.txt 
1   1   2032    1
2   1   2032    2
3   1   999 3
4   1   2032    4
5   1   9999    5
Run Code Online (Sandbox Code Playgroud)

但是,即使指定了-F“ \ t”,修改后的行也由空格分隔:

awk -F "\t" '{gsub(/^999$/,"XXX",$3);print}' test.txt
1   1   2032    1
2   1   2032    2
3 1 XXX 3
4   1   2032    4
5   1   9999    5
Run Code Online (Sandbox Code Playgroud)

如何将修改后的行也用制表符分隔?

Gil*_*not 5

你应该设置

OFS="\t"
Run Code Online (Sandbox Code Playgroud)

所以:

awk -F "\t" '{gsub(/^999$/, "XXX", $3); print}' OFS="\t" test.txt
Run Code Online (Sandbox Code Playgroud)

要么

awk -F "\t" -v OFS="\t" '{gsub(/^999$/, "XXX", $3); print}' test.txt
Run Code Online (Sandbox Code Playgroud)

要么

awk 'BEGIN{OFS=FS="\t"}{gsub(/^999$/, "XXX", $3); print}' OFS="\t" test.txt
Run Code Online (Sandbox Code Playgroud)

男人awk