三剑客(grep)

1、grep命令概念说明(''与""影响不大)

grep ""(要筛选的信息) ---筛选查看信息

grep -B1(数字代表哪一行) ---显示指定信息的前几行内容

grep -A1(数字代表哪一行) ---显示指定信息的后几行内容

grep -C1(数字代表哪一行) ---显示指定信息的前后几行内容

grep -c ---显示指定信息在文件中出现过在多少行

grep -v ---排除所选信息,并查看文件内容

grep -r ---递归查找目录下所有文件中是否存在目标信息

1)如何过滤匹配信息

编辑一个测试文件

 
 [root@hgg ~]# cat >> /hgg/test.txt <<EOF
 
 > hggboy01
 > hgggirl01
 > hggdog01
 > hggboy02
 > hgggirl02
 > hggdog02
 > EOF
 [root@hgg ~]# cat /hgg/test.txt
 hggboy01
 hgggirl01
 hggdog01
 hggboy02
 hgggirl02
 hggdog02
 

01需求:筛选出有hggboy的信息

 [root@hgg ~]# grep "hggboy" /hgg/test.txt
 
 hggboy01
 hggboy02

 

02需求:筛选有hggboy的信息,但是将有hggboy的上一行信息也显示

 [root@hgg ~]# grep -B1 "hggboy"/hgg/test.txt
 
 hggboy01
 --
 
 hggdog01
 hggboy02

03.需求:筛选有hggboy的信息,但是将有hggboy的下一行信息也显示

 [root@hgg ~]# grep -A1 "hggboy" /hgg/test.txt
 hggboy01
 hgggirl01
 --
 
 hggboy02
 hgggirl02

 

04.需求:筛选有hggboy的信息,但是将有hggboy的下一行与上一行信息也显示

 [root@hgg ~]# grep -C1 "hggboy" /hgg/test.txt
 hggboy01
 hgggirl01
 hggdog01
 hggboy02
 hgggirl02

05.需求:筛选有hggboy的信息,查看他出现有多少次

 [root@hgg ~]# grep -c "hggboy" /hgg/test.txt
  2

 

06.需求:排除文件中的空行

grep -v "^$" /hgg/hgg.txt

 

07.需求:匹配以m开头以m结尾的信息

grep "^m.*m$" /hgg/hgg.txt

 

08.需求:匹配分别以a,b,c开头的信息

grep "^[abc]" /hgg/hgg.txt

 

09.需求:匹配多个字符信息

 [root@hgg ~]# grep -E "hggboy|hggdog" /hgg/hgg.txt
 
 hggboy
 hggdog

10.需求:统计空行

 
 [root@HGG ~]# grep -c "^$" /etc/services
 
 17

 

2、sed命令如何进行过滤信息

 [root@hgg ~]# sed -n "/hgggirl/p" /hgg/test.txt
 
 hgggirl01
 hgggirl02

 

3、awk命令如何进行过滤

 [root@hgg ~]# awk "/hggdog/" /hgg/test.txt
 hggdog01
 hggdog02
 
 

 

4、修改文件部分内容信息

01、sed命令 (师傅:真正修改文件内容)

sed 参数 [条件-处理方式:指令] 文件信息

需求:修改test.txt文件内容 ,将所有hggboy信息改为python

vim 替换: :%s#hggboy#python#g

sed 替换:sed 's#hggboy#python#g' /hgg/test.txt

实际操作:

     [root@hgg ~]# sed 's#hggboy#python#g' /hgg/test.txt ---测试修改文件内容没有真改动
 python01
 hgggirl01
 hggdog01
 python02
 hgggirl02
 hggdog02
 [root@hgg ~]# cat /hgg/test.txt
 hggboy01
 hgggirl01
 hggdog01
 hggboy02
 hgggirl02
 hggdog02
 
 [root@hgg ~]# sed -i 's#hggboy#python#g' /hgg/test.txt ---文件内容已改动
 [root@hgg ~]# cat /hgg/test.txt
 python01
 hgggirl01
 hggdog01
 python02
 hgggirl02
 hggdog02
 

02、tr命令 信息替换(假的修改)

tr "hgggirl" "hggboy" < /oldboy /test.txt

修改后会出现文件信息错乱,看一下解释

 

替换信息的情况:tr命令替换信息是1对1的替换

a.替换的内容字符数 > 修改后的字符数 abcd > 123

 [root@hgg ~]# echo abcd |tr "abcd" "123"
 1233
 
 

 

 

b.替换的内容字符数 < 修改后的字符数 abc < 1234

 [root@hgg ~]# echo abcd |tr "abc" "1234"
 123d

 

 

c.替换的内容字符数= 修改后的字符数 abcd = 1234

 [root@hgg ~]# echo abcd |tr "abcd" "1234"
 1234

d.极特殊情况

abcab替换12345 输出是54345

 

posted @ 2022-01-08 15:55  Yusir-SRE  阅读(178)  评论(0编辑  收藏  举报