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

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

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

解决方法

这实际上非常困难.我想出了以下awk脚本,它手动拆分行并将所有字段存储在一个数组中. @H_301_3@{ 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] }
原文链接:https://www.f2er.com/linux/392995.html

猜你在找的Linux相关文章