gpt4 book ai didi

linux - 如何在 awk 中使用多个定界符?

转载 作者:IT王子 更新时间:2023-10-29 00:46:16 27 4
gpt4 key购买 nike

我想使用 awk 通过冒号拆分一个变量,但只拆分最后一个变量。

从这个输入:

 ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0     tcp dpt:22

我想要以下输出:

 protocol=tcp source=0.0.0.0/0 destination=0.0.0.0/0 port=22

现在这是我的 awk 命令:

 awk '/^ACCEPT/ {print "protocol=",$2, "source=",$4,"destination=",$5,"port=",$7}"

产生:

protocol=tcp source=0.0.0.0/0 destination=0.0.0.0/0 port=dpt:22

但我想从 $7 中得到 22 而不是 dpt:22

我尝试过使用 awk 的字段分隔符,但我可以弄清楚如何让它只应用于单个变量

最佳答案

只需调整 FS 以包含:

$ echo 'ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0     tcp dpt:22' |
awk '/^ACCEPT/{printf("protocol=%s source=%s destination=%s port=%s\n", $2,$4,$5,$8)}
' FS='[ :]*'
protocol=tcp source=0.0.0.0/0 destination=0.0.0.0/0 port=22

您可能需要包含制表符,然后执行 FS='[ :\t]*'

关于linux - 如何在 awk 中使用多个定界符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46964073/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com