awk分离器|||
我有一个以下格式的文件awk分离器|||,awk,escaping,Awk,Escaping,我有一个以下格式的文件 field1 ||| field2 ||| field3 我想知道如何用awk解析它 以下版本不起作用 awk -F"|||" '{print $2}' awk -F"\|\|\|" '{print $2}' awk -F" ||| " '{print $2}' 正确的版本是什么?谢谢你(在MacOSX上使用bash或tcsh) 解释:解释一下,因为\是shell的转义字符,所以awk看到-F“\\\\\\\\\\\\\\\\\”。然后awk处理转义字符的-F“\
field1 ||| field2 ||| field3
我想知道如何用awk解析它
以下版本不起作用
awk -F"|||" '{print $2}'
awk -F"\|\|\|" '{print $2}'
awk -F" ||| " '{print $2}'
正确的版本是什么?谢谢你(在MacOSX上使用bash
或tcsh
)
解释:解释一下,因为\是shell的转义字符,所以awk看到-F“\\\\\\\\\\\\\\\\\”
。然后awk处理转义字符的-F“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>,最后生成“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>,用于字段分隔符。在这里(在MacOSX上使用bash
解释:解释一下,因为\是shell的转义字符,所以awk看到-F“\\\\\\\\\\\\\\\\\”
。然后awk处理转义字符的-F“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>,最后产生“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
awk -F" [|][|][|] " '{print $2}'
echo "field1 ||| field2 ||| field3" | awk -F" [|][|][|] " '{print $2}'
field2
正如Martin所说,这应该适用于大多数awk
awk -F" [|]{3} " '{print $2}'
这是:
awk -F" \\\|{3} " '{print $2}'
以下是一种方法:
awk -F" [|][|][|] " '{print $2}'
echo "field1 ||| field2 ||| field3" | awk -F" [|][|][|] " '{print $2}'
field2
正如Martin所说,这应该适用于大多数awk
awk -F" [|]{3} " '{print $2}'
这是:
awk -F" \\\|{3} " '{print $2}'
使用单引号'
echo 'field1 ||| field2 ||| field3' | awk -F'\\|\\|\\|' '{print $3}'
field3
使用单引号'
echo 'field1 ||| field2 ||| field3' | awk -F'\\|\\|\\|' '{print $3}'
field3
至少GNU awk允许awk-F“[|]{3}”
@martin出于某种奇怪的原因,{3}
似乎对我尝试过的所有awk
以及一些busybox
版本都有效。正常使用gnuawk3.xx
您需要添加--re interval
作为gnuawk
的一个选项,以使{3}
与regex一起工作,但由于某些原因,FS
的情况并非如此,至少gnuawk允许awk-F“[|]{3}”
@martin出于某种奇怪的原因,{3}
似乎对我尝试过的所有awk
都有效,还有一些busybox
版本。正常使用gnuawk 3.xx
您需要添加--re interval
作为gnuawk
的一个选项,以使{3}
与regex一起工作,但由于某些原因,FS