我可以在awk的不同代码块中使用不同的分隔符吗?

时间:2018-08-15 21:53:17

标签: linux bash shell awk

我可以在AWK中设置多个定界符,例如下面的示例

BEGIN { Actions}
{ACTION-1} # here delimiter will be comma ","
{ACTION-2} # here delimiter will be colon":"
{ACTION-1} # here delimiter will be space " "
END { Actions }

2 个答案:

答案 0 :(得分:4)

并非如此,但是您可以做的是显式拆分您要查看的行。那应该是:

{ split($0, parts, ","); ACTION-1 }
{ split($0, parts, ":"); ACTION-2 }
{ split($0, parts, " "); ACTION-1 }

通过这种方式,您可以获得所需要的值,但是它们可以作为parts[1], parts[2], ...而不是$1, $2, ...来访问。

答案 1 :(得分:3)

是的,您可以:

BEGIN { Actions}
{FS=","; $0=$0; ACTION-1} # here delimiter will be comma ","
{FS=":"; $0=$0; ACTION-2} # here delimiter will be colon":"
{FS=" "; $0=$0; ACTION-1} # here delimiter will be space " "
END { Actions }

$0分配任何内容都会导致awk使用FS的当前值重新进行字段拆分,因此在此之前它已经将记录拆分为字段的事实是不相关的。

话虽如此-几乎可以肯定,您要尝试执行的操作都是更好的方法。