分别用 grep,sed,awk 实现文本筛选过滤功能
2023-12-13 20:57:18
筛选ip address show
的ipv4
ip address show
可简写为ip address
可简写为ip a
[z@1235eth5 root]$ ip a | grep 'inet\b'
inet 127.0.0.1/8 scope host lo
inet 10.12.35.5/8 brd 10.255.255.255 scope global dynamic noprefixroute enp7s0
[z@1235eth5 root]$ ip a | sed '/inet\b/p' -n
inet 127.0.0.1/8 scope host lo
inet 10.12.35.5/8 brd 10.255.255.255 scope global dynamic noprefixroute enp7s0
[z@1235eth5 root]$ ip a | awk '/inet\>/{print}'
inet 127.0.0.1/8 scope host lo
inet 10.12.35.5/8 brd 10.255.255.255 scope global dynamic noprefixroute enp7s0
ip a | grep 'inet\b'
ip a | sed '/inet\b/p' -n
ip a | awk '/inet\>/{print}'
也可不写{}, 当没有大括号{}时, 相当于有{print $0}={print}
ip a | awk '/inet\>/{print $0}'
ip a | awk '/inet\>/{print}'
ip a | awk '/inet\>/'
测试时, \b
在awk中不起作用, 使用了\>
代替
在正则中,
\b
表示单词边界\<
表示单词开始边界\>
表示单词结束边界
awk分gawk,mawk等
在Ubuntu2204Desktop版中, awk \b
和 \>
都不起作用, 原因是使用了 mawk . Ubuntu2204Server默认用的是 gawk , 也能用 mawk
Fedora39的awk是gawk
ip a | sed '/inet\b/p' -n
👆也可写成👇
ip a | sed -n '/inet\b/p'
-n
是不输出过滤前的内容, p
是输出过滤匹配的行 ;
- 如果只有
-n
, 那就什么都看不到 - 如果只有
p
, 会发现所有内容都输出, 且匹配的内容出现两遍
文章来源:https://blog.csdn.net/kfepiza/article/details/134727819
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!