使用awk时,在字段中保留空格

时间:2015-06-19 07:27:27

标签: awk

我在管道分隔文件上使用nawk来打印字段作为索引和键,其中一些字段包含空格,当没有空格空间时,一切正常,但是在白色空格的情况下awk将其视为字段分隔符并将此o / p打印到新行。我的意见如下:

输入

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个键,并保持基本的空格不变。

1 个答案:

答案 0 :(得分: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)更改为管道符号,然后只将前三个字段打印为索引,将后三个字段作为键打印。