管道时合并 grep 输出

Combine grep output when piping

我使用以下命令 sipcalc 来显示有关 IP 的信息:

sipcalc 192.16.12.1/16 | grep -E 'Network address|Network mask \(bits\)'

输出为:

Network address     - 192.16.0.0
Network mask (bits) - 16

有没有办法合并上面的输出(只有右边的部分),所以输出是:

192.16.0.0/16

我有自己的方法来执行此操作,方法是分离 grep 调用然后连接结果,但我认为这不是一个好的解决方案。 grep 或任何其他可用于像 awk 这样的输出管道命令以获得上面的输出吗?

grep 而不是 确实是一个理想的工具,除了搜索您期望的文本之外,还可以执行其他操作。单独使用awk

awk '/Network address/{ ip = $NF } /Network mask \(bits\)/{ print ip "/" $NF}'

Awk 以 /pattern/ { action } 语法处理记录。因此,当第一个模式匹配时,提取由 space $NF 分隔的最后一个字段,即 Awk 用于存储由 space 分隔的最后一列的值的特殊变量(请参阅 7.5.1 Built-in Variables That Control awk)

当第二个模式以类似的方式匹配时,将最后一个字段与存储在 ip 变量中的值连接起来。 + 只是连接各个字符串以产生所需的结果。