Shell脚本(四)
本次试验需要一个test.txt文件
文件内容:
he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the limit.
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words
#woood #
#woooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.
首先将test.txt文件导入到linux中
[root@centos01 ~]# rz
grep的应用
过滤关键字中包含the的并且显示行号
[root@centos01 ~]# grep -n 'the' test.txt
查找开头是the的行
[root@centos01 ~]# grep -n '^the' test.txt
匹配以单个字符开头是w中间任意结束为d的关键词
[root@centos01 ~]# grep -n 'w..d' test.txt
匹配括号里边的内容
[root@centos01 ~]# grep -n 'sh[io]rt' test.txt
只显示匹配内容
[root@centos01 ~]# grep -o 'wood' test.txt
向test.txt中增加有一行
[root@centos01 ~]# vim test.txt
转义字符使用
[root@centos01 ~]# grep -n -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" test.txt
正则表达式的应用
wo开头d前面重读一个或者多个字符显示出来
[root@centos01 ~]# egrep -n 'wo+d' test.txt
匹配d前边任意字符显示出来
[root@centos01 ~]# egrep -n '?d' test.txt
修改test.txt方便试验
[root@centos01 ~]# vim test.txt
匹配linux或者Linux字符显示出来
[root@centos01 ~]# egrep -n 'linux|Linux' test.txt
匹配h、o、r任意字符显示出来
[root@centos01 ~]# egrep -n '(h|o|r)' test.txt
匹配以s开头结束为t中间是hor的字符
[root@centos01 ~]# egrep -n 's(hor)t' test.txt
sed应用
显示1到5行
[root@centos01 ~]# sed -n '1,5p' test.txt
显示奇数行
[root@centos01 ~]# sed -n '1p;3p;5p' test.txt
删除第一行
[root@centos01 ~]# sed '1d' test.txt
将大写Linux 替换为小写的linux
[root@centos01 ~]# sed -i 's/Linux/linux/' test.txt
对ip关键字添加注释
[root@centos01 ~]# sed -i '/^ip/s/^/#/' test.txt
将1~5行移动到37行后
[root@centos01 ~]# sed -i '1,5{H;d};37G' test.txt
awk应用
创建1.txt文件
[root@centos01 ~]# vim 1.txt
显示文本内容
[root@centos01 ~]# awk '{print}' 1.txt
显示第一列数据
[root@centos01 ~]# awk '{print $1}' 1.txt
显示第一列和第二列数据
[root@centos01 ~]# awk '{print $1,$2}' 1.txt
显示第一列和第二列数据使用–分割号分割
[root@centos01 ~]# awk '{print $1"----"$2}' 1.txt
显示第一行和第二行数据
[root@centos01 ~]# awk 'NR==1,NR==2{print}' 1.txt
过滤/etc/passwd的第七列数据
[root@centos01 ~]# awk -F ':' {'print $7'} /etc/passwd