我在管道分隔文件上使用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个键,并保持基本的空格不变。
答案 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)更改为管道符号,然后只将前三个字段打印为索引,将后三个字段作为键打印。