2015-06-19 64 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 

这是你似乎什么要求。它的工作原理是将输入字段分隔符(gawk中的FS)和输出字段分隔符(OFS)更改为管道符号,然后仅将前三个字段作为索引,将最后三个字段作为关键字进行打印。