一,正则表达式常见的选项和元字符。
1,选项。
-n:显示行号
-o:只显示匹配内容
-j:不区分大小写
-vn:取反
2,元字符。
^:匹配行起始内容
$:匹配行结束内容
.:匹配任意单元符
[]:匹配括号内的内容
[-]:匹配括号内的范围
{n}:匹配的范围的次数
[n1-n2]:匹配起始和结束内容
[^]:匹配括号之外的任意字符
\:转义字符
3,正则表达式的基本应用。
[root@Centos /]# grep -n 'the' ./text.txt #过滤出关键字是the的字符。
[root@Centos /]# grep -n '^the' ./text.txt #查看行开头是the的字符。
[root@Centos /]# grep -n 'b.t' text.txt #匹配任意字符如:but,bat
[root@Centos /]# grep -n 'sh[io]rt' text.txt #匹配shirt和short的字符
[root@Centos /]# grep -n 'wo.d' text.txt #显示匹配任意内容
[root@Centos /]# grep -n ''wo*d'' text.txt #以多个o的字符结构
[root@Centos /]# grep -n -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
text.txt #过滤IP地址信息
[root@Centos /]# grep -n '[^a-b]ho' text.txt #以ho或{a-b}ho开头的字符
二,扩展正则表达式。
1,常见的元字符。
+:重复一次或多次字符显示出来
?:显示当前字母前一个字符
|:或,显示多个字符
():查找组字符串
()+:辨别多个重复组
2,扩展正则表达式的应用。
[root@Centos /]# egrep -n 'wo+d' text.txt #以多个o的字符结构
相似:[root@Centos /]# grep -n ''wo*d'' text.txt
[root@Centos /]# egrep -n '?d' text.txt #将d前边内容字符显示出来
[root@Centos /]# egrep 'linux|LINUX' text.txt #显示LINUX或linux的字符
[root@Centos /]# egrep -n '(h|o|r)' text.txt #显示h或o或r的字符
[root@Centos /]# egrep -n 's(h|o|r)t' text.txt #显示sht或sot或srt的字符
三,sed
1,sed命令选项。
-n:显示处理后的结果
-h:显示帮助
-e:指定命令或脚本处理输入的文本文件
-f:指定脚本处理输入的文本文件
-i:直接编辑文本文件
2,sed的操作符号。
a:添加内容
d:删除内容
p:打印内容
s:替换指定字符
y:字符转换
c:将选定行替换为指定内容
3,基本应用。
[root@Centos /]# sed -n '1,5p' text.txt #打印文件的1~5行
[root@Centos /]# sed -n -e '1p;3p;5p' text.txt #打印特定的行数
[root@Centos /]# sed -i '1d' text.txt #删除文本第一行
[root@Centos /]# sed -i '/^$/d' text.txt #删除空行
[root@Centos /]# sed -i '/^ip/s/^/#/' text.txt #在关键词ip前加入#
[root@Centos /]# sed -i '1,5{H;d};30G' text.txt #将1~5行的数据迁移到30行之后
[root@Centos /]# sed -i '1,5{H;d};30,31G' text.txt #将1~5行迁移到30行到31行之间
[root@Centos /]# sed -i '11 s/$/EOF/' text.txt #在11行的末尾添加EOF
[root@Centos /]# sed -i '/^shor/s/$/EOF/' text.txt #在以shor开头的字符行的末尾添加EOF
[root@Centos /]# sed -i '2aCCC' text.txt #在第三行添加CCC
[root@Centos /]# sed -i '2i666' text.txt #在文件的第二行中插入666
[root@Centos /]# sed '5r/etc/passwd' text.txt #将/etc/passwd文件写入text.txt的第五行中
[root@Centos /]# sed -i 's/o/O/g' text.txt #将全文中的o换为O
[root@Centos /]# sed -i '15,17w1.txt' text.txt #将text文件中15~17行中的数据写入到1.txt中
四,awk
1,awk常见的变量。
FS:文本字段的分隔符,可以使用空格作为占位符
NF:处理列数
NR:处理数据的行号
$0:处理数据的整行数据
$n:处理数据行的第几列数据
2,awk应用。
[root@Centos /]# awk '{print}' text.txt #显示所有内容
[root@Centos /]# awk '{print$1}' text.txt #显示第一列数据
[root@Centos /]# awk '{print $1,$3}' text.txt #显示第一列和第三列
[root@Centos /]# awk '{print$1"--"$2}' text.txt #第一列数据和第二列数据之间加入--
[root@Centos /]# awk 'NR==1,NR==2 {print}' text.txt #显示第一行和第二行
相似:[root@Centos /]# awk 'NR==1||NR==2 {print}' text.txt
[root@Centos /]# awk 'NR==1,NR==4 {print}' text.txt #显示第一行到第二行
[root@Centos /]# awk -F: '{print $1,$7 NF }' /etc/passwd #以:为分割显示第一列和第七列,并显示每行列数
[root@Centos /]# awk -F: '{print NR,$3,NF}' /etc/passwd #以:为分割依次显示行号,第三列,每行的列数