bash - 在 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
对这个问题有什么建议???我正在尝试使用别名命令来提高我们的实验室的效率,这些命令引用一个脚本,该脚本将匹配正在运行的实验室虚拟机并按下它们的键以允许轻松访问原版配置的实验室。
解决方案
作为一个快速而肮脏的答案,
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 脚本。
推荐阅读
- arrays - 将 JSON 转换为数组 Typescript
- node.js - Typescript ESLint 声明文件
- javascript - 为什么要删除输入类型=“数字”中的增加/减少数字?
- clickhouse - ClickHouse 是否支持地图字段?
- html - SQL 仅存储当前日期而不是选定日期
- php - 将值从输入存储到数据库
- matlab - 在 Matlab 中使用事件侦听器而不是函数回调的好处
- dialogflow-es - 如果文本中未指定时间,DialogFlow 将 12:00:00 设置为一天的开始
- php - 当 url 必须在 domain.com/yyy 上打开时如何配置 laravel web
- python - Python 将文件读入二维列表 - newline=None vs strip("\r\n")