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