在 Grep 命令末尾附加运算符以设置为 Bash 变量

Appending an Operator at the end of a Grep Command to Set as Bash Variable

我需要在命令末尾附加一个加法运算符,以便从我们实验室的 运行 个 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地址最后一个数字上加2

示例 171.11.111.0 => 172.11.111.2

对这个问题有什么建议吗???我正在尝试使用别名命令使我们的实验室更有效率,这些别名命令引用将匹配 运行 实验室虚拟机的脚本并推送它们的密钥以允许轻松访问香草配置的实验室。

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

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 以生成机器可读的输出,and/or 也许可以将它变成一个模块,您可以 import 来自另一个 Python 脚本将替换此 shell 管道。

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