首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed/awk搜索字符串并在其旁边打印?

问使用sed/awk搜索字符串并在其旁边打印?
EN

Stack Overflow用户
提问于 2013-07-04 13:43:19
回答 4查看 2.5K关注 0票数 1

我是sed/awk脚本的新手。

我想搜索一个字符串,如果匹配,则打印该字符串的下一个单词。

也就是说,我的输出是RXpackets:1000和TXpackets:2000。

使用sed/awk脚本我要搜索,并将值RXpackets和TXpackets值存储到变量中。这意味着1000和2000值。有谁能帮帮我吗?

也建议我哪个脚本awk/sed是最好学习和使用的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-05 02:25:30

我建议从/proc/net/dev中获取这些值,而不是使用ifconfig等来提取它们。

示例:

代码语言:javascript
复制
#!/bin/sh
iface=eth0
read RXp TXp <<< $(grep $iface /proc/net/dev | awk '{ print $3, $11 }')

echo "$RXp packages received"
echo "$TXp packages sent"
票数 1
EN

Stack Overflow用户

发布于 2013-07-04 14:14:00

您可以遍历此行,当您找到关键字时,您可以捕获它的下一个单词。

代码语言:javascript
复制
... | awk -F: '{for(i=1;i<=NF;i++) if($i~/RXpackets|TXpackets/) print $i"="$(i+1)}'
票数 1
EN

Stack Overflow用户

发布于 2013-07-04 13:47:33

试试这个:

代码语言:javascript
复制
sed -n '/[RT]Xpackets/s/.*[RT]Xpackets: *\([0-9]*\).*/\1/p'

因为这只打印数字,所以您不能区分哪个是哪个。您可以对RXpackets和TXpackets使用单独的命令来获取它们(更改代码行留给读者作为练习)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17462659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档