我使用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
但是,修改后的行用空格分隔,即使指定了-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
如何将修改后的行分隔为制表符?
答案 0 :(得分:4)
你应该设置
OFS="\t"
所以:
awk -F "\t" '{gsub(/^999$/, "XXX", $3); print}' OFS="\t" test.txt
或
awk -F "\t" -v OFS="\t" '{gsub(/^999$/, "XXX", $3); print}' test.txt
或
awk 'BEGIN{OFS=FS="\t"}{gsub(/^999$/, "XXX", $3); print}' OFS="\t" test.txt
请参阅man awk