awk分离器逃逸|||

时间:2014-08-25 17:55:57

标签: awk escaping

我有以下格式的文件

field1 ||| field2 ||| field3

我想知道如何用awk解析它

以下版本

awk -F"|||" '{print $2}'

awk -F"\|\|\|" '{print $2}'

awk -F" ||| " '{print $2}'

什么是正确的版本?谢谢

3 个答案:

答案 0 :(得分:2)

这是(在MacOSX上使用bashtcsh

> echo "field1 ||| field2 ||| field3" > input.txt
> awk -F" \\\|\\\|\\\| " '{print $2}' input.txt
field2

说明:要解释http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_23.html,因为\是shell的转义字符,awk会看到-F" \|\|\| "。然后awk处理转义字符的-F" \|\|\| ",最后产生" ||| "以用于字段分隔符。

答案 1 :(得分: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}'

答案 2 :(得分:0)

使用单引号'

echo 'field1 ||| field2 ||| field3' | awk -F'\\|\\|\\|' '{print $3}'
 field3