python - 如何精确返回bash脚本的输出值有命令
问题描述
我有以下命令:
$ snmpnetstat -v2c -c public -Cs -Cp udp 10.10.0.32
具有终端输出:
udp:
198 total datagrams received
65 datagrams to invalid port
0 datagrams dropped due to errors
265 output datagram requests
我想编写一个返回以下内容的 bash 脚本:
bash 脚本的所需输出:
Received Datagrams: 198
Invalid port:65
Dropped datagrams: 0
Datagram requests: 256
我开始:
#!/bin/bash
rs="$(snmpnetstat -v2c -c public -Cs -Cp udp 10.10.0.32)"
ReceivedDatagrams=$(echo $rs | cut -d"/" -f1)
InvalidPort=$(echo $rs | cut -d"/" -f2)
DroppedDatagrams=$(echo $rs | cut -d"/" -f3)
DatagramRequests=$(echo $rs | cut -d"/" -f4)
echo "Received Datagrams:$ReceivedDatagrams Invalid port:$InvalidPort Dropped datagrams:$DroppedDatagrams Datagram requests:$DatagramRequests"
输出是:
zsz@bme-ib112-05:~/bash_scripts$ ./script.sh
Received Datagrams:udp: 242 total datagrams received 37 datagrams to invalid port 0 datagrams dropped due to errors 638 output datagram requests Invalid port:udp: 242 total datagrams received 37 datagrams to invalid port 0 datagrams dropped due to errors 638 output datagram requests Dropped datagrams:udp: 242 total datagrams received 37 datagrams to invalid port 0 datagrams dropped due to errors 638 output datagram requests Datagram requests:udp: 242 total datagrams received 37 datagrams to invalid port 0 datagrams dropped due to errors 638 output datagram requests
输出值一遍又一遍地重复,而不是我想要的。
解决方案
awk
正如 shellter 所指出的,一个简单的解决方案消除了所有这些额外进程的开销:
$ cat udp.out
udp:
198 total datagrams received
65 datagrams to invalid port
0 datagrams dropped due to errors
265 output datagram requests
$ awk '
/received/ {printf "Received Datagrams: %s\n", $1}
/invalid/ {printf "Invalid port: %s\n" , $1}
/dropped/ {printf "Dropped datagrams: %s\n" , $1}
/requests/ {printf "Datagram requests: %s\n" , $1}
' udp.out
Received Datagrams: 198
Invalid port: 65
Dropped datagrams: 0
Datagram requests: 265
推荐阅读
- mongodb - Power BI 和 MongoDB - 最佳设置是什么?
- css - 我怎样才能给 flex div 的一部分更大的尺寸?
- sql-server - 从查询结果创建表
- json - Javascript 在循环中显示格式错误的 JSON 对象的错误
- machine-learning - 使用 RNN/LSTM 检测速度变化(给定当前 xy 位置)
- python-3.x - 将不同长度的嵌套列表的 Python dict 导出到 csv。如果嵌套列表有 > 1 个条目,则在移动到下一个键之前展开到列
- javascript - 格式化 JSON 日期时间
- apache-kafka - 如何将主题访问权限授予特定用户?
- c# - 转换方法签名和修改方法体
- python - 在 pandas 中,如何创建由 id 索引的数据框以及每个外观具有单独内容的列?