一,grep:用于文本搜索
# grep:查找命令,重点
grep hello test.txt # 在test.txt文件里面查找hello
grep -i hello test.txt # 在test.txt文件里面查找hello,忽略大小写 i:ignore
cat test.txt | grep -i hello # 在test.txt文件里面查找hello,忽略大小写
cat test.txt | grep -o hello # 在test.txt文件里面查找hello,只展示匹配到的内容
[kola@localhost ~]$ echo abcC | grep -i 'c'
abcC
[kola@localhost ~]$ echo abcC | grep -o 'c' # 只显示匹配到的内容
c
[kola@localhost ~]$ echo abcdef | grep -o 'c.' # .c:匹配c和后面的一个字符
cd
[kola@localhost ~]$ echo abcdde | grep -o 'c.*'
cdde
对这种需要搜索多个关键词的,可以新建一个keyword后缀的文件,然后编辑,输入关键字,然后结合grep命令进行操作
![](https://img.haomeiwen.com/i4289108/fd4e83f8bca375e5.png)
二,awk:文本切割
awk:把文件进行逐行读入,如果不指定分隔符,默认以空格为分隔符把它分隔开,再把替换的部分进行处理
awk -F '分隔符' '{需要执行的操作}'
这个时候awk -F 后面的 | 表示或
匹配用户名
打印出用户名
如果要打印多个匹配内容,可以用逗号进行分割,但是结果不会显示逗号
![](https://img.haomeiwen.com/i4289108/97e01ebdef6cd12f.png)
grep和awk一起用
![](https://img.haomeiwen.com/i4289108/a2cfef4460fc7ba6.png)
三,sed:文本替换
语法:sed 's/要被替换的值/被替换的值/'
- 替换单个
$ echo "cat dog cat" | sed "s/cat/fish/"
fish dog cat # 输出结果
- 替换多个
$ echo "cat dog cat" | sed 's/cat/fish/g'
fish dog fish # 输出结果
- 我们除了可以用/号来替换,还可以用其他符号进行替换,输出结果都是一样的。只是常规都是用/号
$ echo "cat dog cat" | sed 's\cat\fish\g'
fish dog fish
$ echo "cat dog cat" | sed 's#cat#fish#g'
fish dog fish
- sed还支持替换文件内容
# 原文件内容
$ cat test.txt
hello kola
kola
hhhhhhh
Hello kola
# 替换原文件内容:这个替换只是把需要替换的文件读到模式空间,改的是空间里面的内容,
# 和原始文件无关
$ sed "s/kola/lucy/" test.txt
hello lucy
lucy
hhhhhhh
Hello lucy
# 如果需要替换原始文件的内容,需要加上 “-i”参数
sed -i "s/kola/lucy/" test.txt
- 如果担心自己因为手滑删除文件,我们可以进行备份
sed -i "s/kola/lucy/" test.txt.bak
网友评论