我有以下格式的文件
field1 ||| field2 ||| field3
我想知道如何用awk解析它
以下版本
awk -F"|||" '{print $2}'
awk -F"\|\|\|" '{print $2}'
awk -F" ||| " '{print $2}'
什么是正确的版本?谢谢
答案 0 :(得分:2)
这是(在MacOSX上使用bash
或tcsh
)
> 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