【零散随笔】grep命令的妙处

刚开始接触linux的时候,学了一大堆命令,由于并不是都能用到,很多命令都被抛在脑后,就连grep这个神器也一直被埋没着。今天复习命令时发现grep的几个妙用,开一贴记录一下。

常见用法如下:

[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色 默认为红色

在网络编程中经常要用ifconfig看看ip地址是多少,然而一个ifconfig出来一大篇,找起来有点不方便(虽然看多了就习惯了)

今天发现配合grep可以是查看类的需求变的如此简单。

ifconfig | grep --color=auto inet

显示如下:

这个比起直接输入ifconfig已经清楚了很多,但是我只想看ipv4的地址,有没有办法在结果中再次筛选出ipv4的行呢?

我用到的是 字符类的反向选择符 [^]

ok,我的强迫症得到满足~


然而!我发现[^]还有别的用法!把 'inet[^6]' 改为 'inet[6^]' 后结果变成了如下:

多次尝试后发现,如果将筛选值置于^前面,就会筛选出具有 包含关系 的结果。

刚刚是在inet后包含6,如果在检索串前面放置这种[arg^],能否筛选出包含关系的结果呢?

还是以ifconfig为例,在诸多的flags中检索。

现在我拟定筛选串为 flags值为‘xx43’的行,也就是flags值包含43的。

那么我想进一步筛选出结果中,前面包含‘9’的,也就是‘x943’的结果。

从而验证出如果[arg^]这样的写法,不是剔除arg,而是包含arg。

但是这样的写法是不规范的,如果想要包含直接写在串前即可,所以还是这样写[^arg],以达到剔除arg的效果。

[^]的用法总结:

string[^arg]     在筛选出string的结果中,剔除string之后有arg的结果。

[^arg]string     在筛选出string的结果中,剔除string之前有arg的结果。


关于[^]的用法还有几个细节问题,我认为这位大佬分析的很好。

这里引用一下这个大佬的例子,原贴地址:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856896.html


定位行首与行尾字节 ^和 $

'^arg'和'arg$' 分别为以arg开头,和以arg结尾

PS:可以用'^$'来检索空行


任意字节 .     重复字节 *

可以使用'ab..ef' 实现模糊检索

 

用'0*0'搜索至少含有两个0的行。

PS:骚操作之 搜索包含任意数字的行

同理可以实现字母的查找

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值