AWKing 或 GREPing 括号 [ ]?
AWKing or GREPing brackets [ ]?
找遍了也没找到解决方法。
我将如何 awk 或 grep 以下内容:
$ mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration
[/dev/cdc-wdm0] IPv4 configuration available: 'address, gateway, dns'
IP [0]: '11.22.333.44/55'
Gateway: '14.13.198.4'
DNS [0]: '172.17.1.101'
DNS [1]: '172.17.1.102'
DNS [2]: '172.17.1.101'
DNS [3]: '172.17.1.102'
所以我最终得到:
11.22.33.44/55
我尝试了多种不同的 grep 和 awk 组合,但找不到解决方案。
像这样:
grep '[0-9]' file_with_text | awk '{print $NF}
grep [0-9]
仅包含数字的行并将输出通过管道传输到 awk。
$NF
将 return 最后一个元素。
如果您只想要包含 /
的行,只需将其添加到 grep [0-9]/
.
此外,为了获得完整的答案,您可以将命令的输出通过管道传输到 grep 中:
mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration | grep '[0-9]/' | awk '{print $NF}
您可以一次性完成此操作 awk
:
mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration |
awk ' == "IP" {gsub(/7/, "", $NF); print $NF}'
11.22.333.44/55
使用 cat file
因为我没有 mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration
:
$ cat file | awk -F"'" '/IP \[/{print }'
11.22.333.44/55
$ cat file | awk -F"'" '/Gateway/{print }'
14.13.198.4
或者如果该命令的输出总是看起来像您发布的示例,也许这就是您所需要的:
$ cat file | awk -v RS= -F"'" '{print }'
11.22.333.44/55
$ cat file | awk -v RS= -F"'" '{print }'
14.13.198.4
我会利用 tr
进行预处理,利用 GNU AWK
进行处理,让 file.txt
内容成为
IP [0]: '11.22.333.44/55'
Gateway: '14.13.198.4'
DNS [0]: '172.17.1.101'
DNS [1]: '172.17.1.102'
DNS [2]: '172.17.1.101'
DNS [3]: '172.17.1.102'
然后
cat file.txt | tr -d "'" | awk '/IP/{print $NF}'
输出
11.22.333.44/55
说明:如果行包含 IP
.[=21=,则使用 tr
删除 '
然后 awk
打印最后一列 ($NF
) ]
(在 tr (GNU coreutils) 8.30 和 GNU Awk 5.0.1 中测试)
找遍了也没找到解决方法。
我将如何 awk 或 grep 以下内容:
$ mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration
[/dev/cdc-wdm0] IPv4 configuration available: 'address, gateway, dns'
IP [0]: '11.22.333.44/55'
Gateway: '14.13.198.4'
DNS [0]: '172.17.1.101'
DNS [1]: '172.17.1.102'
DNS [2]: '172.17.1.101'
DNS [3]: '172.17.1.102'
所以我最终得到:
11.22.33.44/55
我尝试了多种不同的 grep 和 awk 组合,但找不到解决方案。
像这样:
grep '[0-9]' file_with_text | awk '{print $NF}
grep [0-9]
仅包含数字的行并将输出通过管道传输到 awk。
$NF
将 return 最后一个元素。
如果您只想要包含 /
的行,只需将其添加到 grep [0-9]/
.
此外,为了获得完整的答案,您可以将命令的输出通过管道传输到 grep 中:
mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration | grep '[0-9]/' | awk '{print $NF}
您可以一次性完成此操作 awk
:
mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration |
awk ' == "IP" {gsub(/7/, "", $NF); print $NF}'
11.22.333.44/55
使用 cat file
因为我没有 mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration
:
$ cat file | awk -F"'" '/IP \[/{print }'
11.22.333.44/55
$ cat file | awk -F"'" '/Gateway/{print }'
14.13.198.4
或者如果该命令的输出总是看起来像您发布的示例,也许这就是您所需要的:
$ cat file | awk -v RS= -F"'" '{print }'
11.22.333.44/55
$ cat file | awk -v RS= -F"'" '{print }'
14.13.198.4
我会利用 tr
进行预处理,利用 GNU AWK
进行处理,让 file.txt
内容成为
IP [0]: '11.22.333.44/55'
Gateway: '14.13.198.4'
DNS [0]: '172.17.1.101'
DNS [1]: '172.17.1.102'
DNS [2]: '172.17.1.101'
DNS [3]: '172.17.1.102'
然后
cat file.txt | tr -d "'" | awk '/IP/{print $NF}'
输出
11.22.333.44/55
说明:如果行包含 IP
.[=21=,则使用 tr
删除 '
然后 awk
打印最后一列 ($NF
) ]
(在 tr (GNU coreutils) 8.30 和 GNU Awk 5.0.1 中测试)