2012-05-14 3 views
1

Это просто для любопытства.Необычный выход awk без использования printf

У меня есть вкладка разделителями файл как этот

jklh banana hk 
hkl klh jklh 
h hk banana 
h hk kljh 
asdf banana lk 
sdfa jklæ jklæ 
banana sdf jklæ 

Делая это, я заменить «банан» в первой колонке и выход остается в противном случае тот же:

awk '{gsub(/banana/,0,$1)}; {printf "%s\t%s\t%s\n", $1, $2, $3}' file > outfile 

это на другой рука заменяет вкладки пробелами в строке I, заменив слово бананом на 0:

awk '{gsub(/banana/,0,$1)}; {print}' file > outfile 

Как ca n Я использую OFS или что-то подобное, чтобы распечатать замененную строку без замены вкладок. Я много играл без прогресса. Помните: Нет printf

ответ

2

Набор OFS на вкладку:

awk -v OFS="\t" '{gsub(/banana/,0,$1)}; {print}' 
+0

я пропускал на «-v» – AWE

+2

@AWE: Альтернативы: Вы можете использовать его без '-V', поместив его в конце : 'awk '{...}' OFS =" \ t "inputfile' или в блоке' BEGIN': 'awk 'BEGIN {OFS =" \ t "} {...}' inputfile' –

+0

Почему-то я не сделал Когда я пытался, я споткнулся о любой из подходящих альтернатив. Я вижу, что я часто был близок. – AWE