在Grep命令的末尾添加一个运算符以设置为Bash变量



我需要在命令末尾添加一个加法运算符,该运算符从实验室中运行的虚拟机列表中解析出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

对这个问题有什么建议吗???我正试图通过别名命令来提高我们的实验室的效率,这些命令引用了一个脚本,该脚本将与正在运行的实验室vm相匹配,并推送它们的密钥,以便轻松访问普通配置的实验室。

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

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以产生机器可读的输出,和/或将其转化为一个模块,您可以从另一个Python脚本中import来取代这个shell管道。

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

相关内容

最新更新