正则介绍_grep
sed
正则介绍_grep
正则介绍_grep
-
什么是正则
-
正则就是一串有规律的字符串
-
掌握好正则对于编写shell脚本有很大帮助
-
各种编程语言都有正则,原理是一样的
-
本章将要学习grep/egrep、sed、awk
-
grep
grep [-cinvrABC] 'word' filename
grep 'nologin' passwd
grep 自带color 选项
-c 行数
grep -c 'nologin' passwd
-i 不区分大小写
grep -ni 'nologin' passwd
-n 显示行号
grep -n 'nologin' passwd
-v 取反
grep -vni 'nologin' passwd
-r 遍历所有子目录
grep -r 'root' /etc
-A 后面更数字,过滤出符合要求的行以及下面n行
grep -A2 'root' passwd
-B 同上,过滤出符合要求的行以及上面n行
grep -B2 'root' passwd
-C 同上,同时过滤出符合要求的行以及上下各n行
grep -C2 'root' passwd
grep '[0-9]' passwd
方括号中任意字符
grep -v '[0-9]' /etc/inittab
grep -v '^#' inittab
^# 以#开头
[^0-9] 非数字
grep ‘[^0-9]’ inittab
grep '^[^0-9]’ inittab 非数字开头
[^a-zA-Z] 非字母
[^0-9a-zA-Z] 非字母数字
grep 'r.o' passwd
.表示任意一个字符
grep 'o*o' passwd
*表示*左边字符重复0到n次
grep ‘.*’ passwd
.* 表示所有字符
grep 'o\{2\}' passwd
o\{2\} 表示 o出现两次
\脱意符号
egrep 'o{2}' passwd
grep -E 'o{2}' passwd
grep -E '(oo){2}' passwd
grep 'o\+o' passwd egrep 'o+o' passwd
+表示+前面的字符重复1次到n次
egrep 'o?t' passwd
?表示?之前的字符重复0次或1次
egrep 'root|nologin' passwd
| 表示或者
sed
查找替换功能
sed -n '/root/'p test.txt 查找 加 -n 和 p
sed -nr '/o+t/'p test.txt sed n '/o\+t/'p test.txt 加r后不用脱意符
sed -nr '/root|bus/'p test.txt
sed -nr '/o{2}/'p test.txt
sed -n '2'p test.txt
打印指定的行
sed -n '2,5'p test.txt
打印2到5行
sed -n '15,$'p test.txt $表示末行
打印15到最后一行
sed -e '1'p -e '/bus/'p -n test.txt -e 一表达式内做多个动作
打印第一行并且打印匹配bus行
sed -e '1'p -e '/root/'p -n test.txt
sed -n '/bus/'Ip test.txt
加I 不区分大小写
sed '1,10'd test.txt
不列出前10行
sed -i '1,10'd test.txt
-i 删除前10行
sed -i '/user1/'d test.txt
删除指定行
sed '1,10s/root/toor/g' test.txt
替换1到10行中root为toor
head test.txt |sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
前十行的第一个和最后一个互换
head test.txt | sed -r 's/(.*)/aaa:&/' &符号表示前面的()
前十行每行前加aaa:
head test.txt |sed 's/[a-zA-Z]//g'
删除所有字母