2013-03-19 2 views
3

Я использую AWK 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 

Однако модифицированная линия отделяется пробелами, даже если -F «\ т» было указано:

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 

Как я могу изменить строку (-и), разделенную вкладками?

ответ

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

+1

+1, вот в чем смысл! – Kent

+1

Замечательно, спасибо! –

+0

Я принял это для обозначения переменной окружения 'OFS =" \ t "', которая не работала для меня. Мне следовало бы поболтать. – tremby

 Смежные вопросы

  • Нет связанных вопросов^_^