一、 正则表达式
1、 正则表达式的常见的选项和应用
(1)正则表达式常见的选项
-n:显示行号
-o:显示匹配内容
-i:不区分大小写
-vn:取反
(2)正则表达式常见的元字符
^:起始内容
$:结束内容
.:匹配任意单个字符
[]:匹配括号中的内容
[-]:匹配括号里边内容的范围
{n}:匹配范围的次数
{n1-n2}:匹配开始和结束的内容
[^]:匹配括号之外的任意字符
\:转义字符
(3)查看特定字符(grep)从test.txt文件中查找“the”所在位置,并显示行号
[root@centos01 ~]# grep -n 'the' test.txt(4)方向选择,查找不包含“the”字符的行
[root@centos01 ~]# grep -vn 'the' test.txt(5)查找“shirt”与“short”这两个字符串使用中括号“[]”
[root@centos01 ~]# grep -n 'sh[io]rt' test.txt(6)查找包含重复单个字符“oo”
[root@centos01 ~]# grep -n 'oo' test.txt(7)查找“oo”前面不是“w”的字符串时,使用“[^]”
[root@centos01 ~]# grep -n '[^w]oo' test.txt(8)若不希望“oo”前面存在小写字母,可以使用“[^a-z]”
[root@centos01 ~]# grep -n '[^a-z]oo' test.txt(9)查找“the”字符串为行首的行
[root@centos01 ~]# grep -n ‘^the’ test.txt
(10)查询以小写字母开头的行用“^[a-z]” [root@centos01 ~]# grep -n '^[a-z]' test.txt (11)查询不以字母开头的使用“^[^a-zA-Z]” [root@centos01 ~]# grep -n '^[^a-zA-Z]' test.txt(12)使用转义符“\”查询以小数点结尾的行
[root@centos01 ~]# grep -n '\.$' test.txt(13)查询空白行使用“^$”
[root@centos01 ~]# grep -n '^$' test.txt(14)查找“w??d”字符串使用小数点
[root@centos01 ~]# grep -n 'w..d' test.txt(15)查询包含至少两个以上o以上的字符串使用“ooo*”
[root@centos01 ~]# grep -n 'ooo*' test.txt(16)查询以w开头d结尾,中间包含至少一个o的字符串使用“woo*d”
[root@centos01 ~]# grep -n 'woo*d' test.txt(17)查询以w开头d结尾,中间的字符可有可无的字符串,使用“w.*d”
[root@centos01 ~]# grep -n 'w.*d' test.txt(18) 查询任意数字所在行
[root@centos01 ~]# grep -n '[0-9][0-9]*' test.txt(19)查询两个o的字符
[root@centos01 ~]# grep -n 'o\{2\}' test.txt(20)查询以w开头d结尾,中间包含2~5个o的字符串
[root@centos01 ~]# grep -n 'wo\{2,5\}d' test.txt(21)查询以w开头d结尾,中间包含2个以上o的字符串
[root@centos01 ~]# grep -n 'wo\{2,\}d' test.txt2、 扩展正则表达式
(1)扩展正则表达式常见元字符
+:重复一个或者一个以上的前一个字符
?:零个或者一个的前一个字符
|:使用或者的方式找出多个字符
():查找“组”字符串
()+:辨别多个重复的组
(2)查询以wo开头d 结尾前面重复一个或者多个字符显示出来
[root@centos01 ~]# egrep -n 'wo+d' test.txt(3)匹配d前面任意字符显示出来
[root@centos01 ~]# egrep -n '?d' test.txt(4)匹配linux或者Linux字符显示出来
[root@centos01 ~]# egrep -n 'linux|Linux' test.txt(5)匹配h,o,r任意字符显示出来
[root@centos01 ~]# egrep -n '(h|o|r)' test.txt(6)匹配以s开头t结束中间是hor的字符
[root@centos01 ~]# egrep -n 's(hor)t' test.txt(7)查询开头的”A”结尾的”C”,中间有一个以上的”xyz”字符
[root@centos01 ~]# egrep -n 'A(xyz)+C' test.txt二、 sed和awk文本处理应用
1、 sed命令常见选项和操作符
(1)sed命令常见的选项
-n:表示仅显示处理后的结果
-e:指定目命令或者脚本来处理输入的文本文件
-f:指定脚本文件来处理输入的文本文件
-h:显示帮助
-i:直接编辑文本文件
(2)sed命令常见的操作符
a:增加内容
d:删除内容
c:替换,将选定行替换为指定内容
p:打印内容
y:字符转换
i:插入
s:替换,替换指定字符
(3)显示1到5行内容
[root@centos01 ~]# sed -n '1,5p' test.txt(4)显示所有奇数行(n表示读入下一行资料)
[root@centos01 ~]# sed -n 'n;p' test.txt(5)显示第1~5行之间的奇数行
[root@centos01 ~]# sed -n '1,5{p;n}' test.txt(6)输出从第4行至第一个包含the的行
[root@centos01 ~]# sed -n '4,/the/p' test.txt(7)结合nl命令(用于计算文件的行数)删除第三行
[root@centos01 ~]# nl test.txt | sed '3d'(8)删除包含cross的行,,原本的第8行被删除
[root@centos01 ~]# nl test.txt | sed ‘/cross/d’
(9)删除以小写字母开头的行
[root@centos01 ~]# sed '/^[a-z]/d' test.txt(10)将文件中所有the替换为THE
[root@centos01 ~]# sed 's/the/THE/g' test.txt(11)将每行中的第一个the替换为THE
[root@centos01 ~]# sed 's/the/THE/' test.txt(12)在每行行首插入#号
[root@centos01 ~]# sed 's/^/#/' test.txt(13)将第1~5行内容转移至第17行后
[root@centos01 ~]# sed '1,5{H;d};17G' test.txt(14)在第3行后插入一个新行,内容为New
[root@centos01 ~]# sed '3aNew' test.txt(15)使用脚本编辑文件将第1~5行内容转移至第17行后
[root@centos01 ~]# vi opt.list 1,5H 1,5d 17G [root@centos01 ~]# sed -f opt.list test.txt2、 awk
(1)awk的作用
读取文本数据根据需要过滤关键内容
(2)awk中的变量
FS:指定每行文本的字段分隔符,默认为空格制表位
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数)
FILENAME:被处理的文件名
RS:数据记录分隔,默认为ln,即每行为一条记录
$n:当前处理的第n个字段(第n列)
$0:当前处理的行的整行内容
(3)输出所有内容
[root@centos01 ~]# awk '{print}' test.txt(4) 输出所有奇数行的内容
[root@centos01 ~]# awk '(NR%2)==1{print}' test.txt(5)输出第1~3行内容
[root@centos01 ~]# awk 'NR==1,NR==3{print}' test.txt