三剑客(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