一. 需求
?有如下文件,現要求
- 刪除含有xuecheng關鍵字的行
- 刪除含有192.168.1.1關鍵字的行
- 也就是說,最終只會留下
127.0.0.1 license.sublimehq.com
127.0.0.1 www.xuecheng.com
127.0.0.1 img.xuecheng.com
192.168.1.1 www.test.com
127.0.0.1 video.xuecheng.com
127.0.0.1 teacher.xuecheng.com
127.0.0.1 system.xuecheng.com
127.0.0.1 ucenter.xuecheng.com
127.0.0.1 license.sublimehq.com
二. grep -v 排除
?方式1
-E
:用來指定正則表達式-v
:用來排除
grep -E "xuecheng|192.168.1.1" -v ./hosts
# 查看hosts文件內容
fengyehong@ubuntu:~/jmw_work_space/20240625$ cat hosts
127.0.0.1 www.xuecheng.com
127.0.0.1 img.xuecheng.com
192.168.1.1 www.test.com
127.0.0.1 video.xuecheng.com
127.0.0.1 teacher.xuecheng.com
127.0.0.1 system.xuecheng.com
127.0.0.1 ucenter.xuecheng.com
127.0.0.1 license.sublimehq.com# 排除指定的行
fengyehong@ubuntu:~/jmw_work_space/20240625$ grep -E "xuecheng|192.168.1.1" -v ./hosts
127.0.0.1 license.sublimehq.com
?方式2
grep -v "xuecheng" ./hosts | grep -v "192.168.1.1"
# 查看hosts文件內容
fengyehong@ubuntu:~/jmw_work_space/20240625$ cat hosts
127.0.0.1 www.xuecheng.com
127.0.0.1 img.xuecheng.com
192.168.1.1 www.test.com
127.0.0.1 video.xuecheng.com
127.0.0.1 teacher.xuecheng.com
127.0.0.1 system.xuecheng.com
127.0.0.1 ucenter.xuecheng.com
127.0.0.1 license.sublimehq.com# 先使用-v排除掉xuecheng關鍵字之后,再使用-v排除192.168.1.1關鍵字
fengyehong@ubuntu:~/jmw_work_space/20240625$ grep -v "xuecheng" ./hosts | grep -v "192.168.1.1"
127.0.0.1 license.sublimehq.com
三. 創建新文件
grep -v "xuecheng" ./hosts | grep -v "192.168.1.1" > new_hosts