我想用冒号用awk拆分一个变量,但只能拆分最后一个变量。
从此输入:
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Run Code Online (Sandbox Code Playgroud)
我想要以下输出:
protocol=tcp source=0.0.0.0/0 destination=0.0.0.0/0 port=22
Run Code Online (Sandbox Code Playgroud)
现在这是我的awk命令:
awk '/^ACCEPT/ {print "protocol=",$2, "source=",$4,"destination=",$5,"port=",$7}"
Run Code Online (Sandbox Code Playgroud)
产生:
protocol=tcp source=0.0.0.0/0 destination=0.0.0.0/0 port=dpt:22
Run Code Online (Sandbox Code Playgroud)
但我想22离开$7而不是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
Run Code Online (Sandbox Code Playgroud)
您可能需要包括标签,然后执行 FS='[ :\t]*'