2015-06-19 3 views
-2

Я использую nawk в файле с разделителями каналов для печати полей в качестве индекса и ключа, где некоторые из полей содержат пробел, когда нет свободного пространства, все работает нормально, но в случае белых пробелов, как-то awk рассматривает его как разделитель полей и печатает эту o/p в новую строку. се мой вход ниже:сохранить пробелы в полях при использовании awk

Входной

a|b|c d e|1|2|3 
a|b c|d|1|2|2 3 
Output 
Index=a|b|c 
Key=1|2|3 
Index=d 
Key= 
Index=e 
Key= 
Index=a|b 
Key=1|2|2 
Index=c|d 
Key=3 

Ожидаемый результат

Index=a|b|c d e 
Key=1|2|3 
Index=a|b c|d 
Key=1|2|2 3 

Короче за два индекса записи 2 и 2 ключа и сохранить основные пробелы, как это.

ответ

0

Если вы не разместили свой код, сложно сказать, что вы испортили. Следующий код создает свой ожидаемый выход

#!/usr/bin/awk -f 

BEGIN { FS=OFS="|"; } 

{ 
    print "index=" $1, $2, $3; 
    print "key =" $4, $5, $6; 
} 

при подаче с входом образца

a|b|c d e|1|2|3 
a|b c|d|1|2|2 3 

выход

index=a|b|c d e 
key =1|2|3 
index=a|b c|d 
key =1|2|2 3 

что и вы, кажется, требуют. Он работает, потому что я изменяю разделитель полей ввода (FS в gawk) и разделитель полей вывода (OFS) как символ трубы, а затем просто печатаю первые три поля в качестве индекса и последние три в качестве ключа.

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