linux – 如何使用awk提取引用字段?

前端之家收集整理的这篇文章主要介绍了linux – 如何使用awk提取引用字段?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Escaping separator within double quotes,in awk3个
我在用
awk '{ printf "%s",$3 }'

从空格分隔的行中提取一些字段.当我引用字段时,我得到部分结果.请问有谁提出解决方案吗?

解决方法

这实际上非常困难.我想出了以下awk脚本,它手动拆分行并将所有字段存储在一个数组中.
{
    s = $0
    i = 0
    split("",a)
    while ((m = match(s,/"[^"]*"/)) > 0) {
        # Add all unquoted fields before this field
        n = split(substr(s,1,m - 1),t)
        for (j = 1; j <= n; j++)
            a[++i] = t[j]
        # Add this quoted field
        a[++i] = substr(s,RSTART + 1,RLENGTH - 2)
        s = substr(s,RSTART + RLENGTH)
        if (i >= 3) # We can stop once we have field 3
            break
    }
    # Process the remaining unquoted fields after the last quoted field
    n = split(s,t)
    for (j = 1; j <= n; j++)
        a[++i] = t[j]
    print a[3]
}

猜你在找的Linux相关文章