我使用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
如何让修改后的行也用制表符分隔?
你应该设置
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