2013-12-17 1 views
0

Я хочу, чтобы добавить разрыв строки (\ п) в передней части 5-го элемента на любой другой линии:простак: изменение 5-й элемент на любой другой линии

2, 0, 0, 0, 2 
4, 0, 0, 0, 4 
6, 0, 0, 0, 6 
8, 0, 0, 0, 8 

... для того, чтобы получить:

2, 0, 0, 0, 2 
4, 0, 0, 0, \n4 
6, 0, 0, 0, 6 
8, 0, 0, 0, \n8 

То, что я до сих пор в простака не работает:

gawk '{if (NR % 2) {$5=\n$5; print} else print}' 

ответ

1

Вы могли бы сказать:

awk '{NR%2 || $5="\\n"$5 }1' filename 

Обратите внимание, что для получения буквы \ вам необходимо сбежать.

ввод данных, было бы произвести:

2, 0, 0, 0, 2 
4, 0, 0, 0, \n4 
6, 0, 0, 0, 6 
8, 0, 0, 0, \n8 

В качестве альтернативы (как указывает @WilliamPursell), вы могли бы сказать:

awk '!(NR%2) {$5="\\n"$5 }1' filename 
+0

Спасибо, это работает. – MrSparkly

+0

Использование короткого замыкания '||' здесь немного неясное. Кажется более идиоматичным писать 'awk '! (NR% 2) {$ 5 =" \\ n "$ 5} 1'' –

+0

@WilliamPursell благодарит, обновляется согласно вашему предложению. – devnull