【发布时间】:2020-11-30 03:49:19
【问题描述】:
当数据字段中有管道时,我无法获得所需的 o/p。
If the i/p is
SAmple file is tst
hdr1|"hdr2|tst"|"hdr3|tst|tst"|hdr4|"hdr5|tst|tst"
lbl1|"lbl2|tst"|"lbl3|tst|tst"|lbl4|"lbl5|tst|tst"
I tried with this cmd but dont get the expected o/p - cut -f2,3 -d"|" tst
The expected o/p is
"hdr2|tst"|"hdr3|tst|tst"
"lbl2|tst"|"lbl3|tst|tst"
有没有一种简单的方法可以破解这个 o/p...不想使用 sed bcoz 正在使用的工具不允许字符(“”-反斜杠)。我的意思是将此命令嵌入其中一个工具中 我也在使用旧版本的 gawk -
so this cmd doesnt give te desired o/p
gawk -v FPAT='[^|]*|("[^"]*")+' '{print $2, $3}' OFS="|"
Output of gawk --version
GNU Awk 3.1.7
Output of cat -vet tst
hdr1|"hdr2|tst"|"hdr3|tst|tst"|hdr4|"hdr5|tst|tst"$
lbl1|"lbl2|tst"|"lbl3|tst|tst"|lbl4|"lbl5|tst|tst"$
【问题讨论】:
-
看起来是您使用 FPAT 的 GNU awk 版本中的错误。根据此评论 - stackoverflow.com/questions/49031764/…,如果您使用 FPAT,建议将您的 gawk 升级到 4.2+
-
这不是一个错误,直到 gawk 4.0 才引入 FPAT,并且 OP 在 gawk 3.1.7 上(已经过时了大约 10 年!)
-
@EdMorton:哎呀!不知道。无论如何,升级到后一个版本是 OP 的一种选择
标签: parsing awk pipe delimited