文本文件中的内容:
abc [abc d] "abcd e" test
abc [abc d] "-" test
基本上每一列都由空格分隔。但是在某些列的内容中也存在一些空格,在这种情况下,整个内容将用[]或“”包裹,如上例所示。如何通过awk获得正确的列?
正确的列应该是
1:abc 2:[abc d] 3:“ abcd e” 4:测试
1:abc 2:[abc d] 3:“-” 4:测试
但不是:
1:abc 2:[abc 3:d] 4:“ abcd 5:e” 4:测试
答案 0 :(得分:1)
如果您有GNU awk,则可以使用FPAT:
$ awk '
BEGIN {
FPAT="([^ ]+)|([[][^][]+[]])|(\"[^\"]+\")"
}
{
print $3
}' file
"abcd e"
"-"
此示例将其视为字段:
[^ ]+
分隔的字符串[[][^][]+[]]
括起来的字符串"[^\"]+\"
我没有测试如果封闭在其他东西中会发生什么。如果这样做,请报告。