首页 > 解决方案 > 在 Grep 命令末尾附加一个运算符以设置为 Bash 变量

问题描述

我需要在命令末尾附加一个加法运算符,从我们实验室中正在运行的 VM 列表中解析出 IP 地址。命令如下

$ dos.py net-list vanilla80 | grep -i 'fuelweb' | grep -Eo "[0-9][0-9][0-9].[0-9][0-9].[0-9][0-9][0-9].([0-9])"

最后,我想在 IP 地址末尾的 IP 地址的最后一个数字上加两个。

示例 171.11.111.0 => 172.11.111.2

对这个问题有什么建议???我正在尝试使用别名命令来提高我们的实验室的效率,这些命令引用一个脚本,该脚本将匹配正在运行的实验室虚拟机并按下它们的键以允许轻松访问原版配置的实验室。

标签: bashalias

解决方案


作为一个快速而肮脏的答案,

dos.py net-list vanilla80 |
grep -i 'fuelweb' |
grep -Eo "[0-9][0-9][0-9].[0-9][0-9].[0-9][0-9][0-9].([0-9])" |
awk -F . 'BEGIN { OFS=FS }
    { $NF += 2 }1'

但是,更好的解决方案是重构dos.py以产生机器可读的输出,和/或可能将其转换为您可以import从另一个 Python 脚本中替换此 shell 管道的模块。

顺便说一句,您的grep -Eo正则表达式可以重构为类似的东西\<[0-9]{1,3}(\.[0-9]{1,3})(3}\>,如果您最终没有在 Python 中重写所有这些逻辑,也许整个管道可以重构为单个 Awk 脚本。


推荐阅读