grep 同时排除多个关键字

本文介绍如何利用 ifconfig 和 grep 命令组合在 Mac 系统中精确查找本机 IP 地址,通过逐步排除无关信息,最终定位到所需的 IPv4 地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不说废话, 例如需要排除 abc.txt 中的  mmm   nnn

   grep -v 'mmm\|nnn' abc.txt 

 

再举个例子,需要确定mac 的本机ip地址,  显然直接可以输入 ifconfig, 但是会出来一大堆信息,那么再通过 grep inet 可以拿到类似如下的信息:

复制代码
bash-3.2# ifconfig | grep inet
   inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet6 fe80::c37:dee4:5ad4:944b%en0 prefixlen 64 secured scopeid 0x4 inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255 inet6 fe80::8dc:a3ff:feaf:fbe1%awdl0 prefixlen 64 scopeid 0x9 inet6 fe80::bd0c:5502:92ad:25e1%utun0 prefixlen 64 scopeid 0xa
复制代码

 

 但是这样还是很多,需要从这几条信息里面去找到所需要的 ip 地址,我们可能想到了使用 grep -v 屏蔽掉 inet6,结果如下:

 

bash-3.2# ifconfig | grep inet | grep -v inet6
    inet 127.0.0.1 netmask 0xff000000
    inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255

这样其实也可以看了,但是强迫症患者伤不起啊,我就只要一条,怎么弄呢,显然还可以继续通过 grep -v 127.0.0.1 来屏蔽掉第一条记录,如下:

 

bash-3.2# ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1
    inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255

这样好像不是很优雅,那就刚刚说的方法,如下:

bash-3.2# ifconfig | grep inet | grep -v 'inet6\|127.0.0.1'
    inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255

 

当然,还可以同时屏蔽掉更多的关键字,这里就不展开了,不知道的可以给我留言。

### 如何使用 `grep -v` 排除多个关键字 `grep -v` 命令用于反向匹配,即显示不包含指定模式的行。如果要同时排除多个关键字,则可以通过多次使用 `-e` 参数来实现[^1]。 以下是具体的语法结构: ```bash grep -v -e 关键字1 -e 关键字2 -e 关键字3 文件名 ``` 此方法允许逐个定义需要排除关键字列表。每增加一个新的关键字,只需追加一个 `-e` 和对应的关键词即可。 #### 示例代码 假设有一个文件名为 `example.txt`,其内容如下: ``` Java is a programming language. Python is another programming language. JavaScript can be used for web development. C++ is powerful. SQL databases are essential. NoSQL databases are flexible. ``` 现在希望排除包含 “Java” 或 “SQL” 的行,可以运行以下命令: ```bash grep -v -e Java -e SQL example.txt ``` 执行后的输出将是: ``` Python is another programming language. C++ is powerful. NoSQL databases are flexible. ``` 以上结果表明,“Java” 和 “SQL” 所在的行已被成功过滤掉。 另一种方式是通过正则表达式的逻辑 OR 来完成相同的功能。例如: ```bash grep -Ev 'Java|SQL' example.txt ``` 这里的 `-E` 表示启用扩展正则表达式支持,而 `|` 是逻辑 OR 运算符,表示匹配任意一侧的内容。 ### 注意事项 当处理大量关键字时,建议将这些关键字存储在一个单独的文件中,并利用该文件作为输入源。例如,创建一个名为 `exclude_keywords.txt` 的文件,其中每一行写入一个待排除关键字。之后可借助以下命令实现批量排除操作: ```bash grep -vf exclude_keywords.txt example.txt ``` 上述指令中的 `-f` 参数指定了包含模式字符串的文件路径,从而简化复杂场景下的配置过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值