正则表达式
- grep/egrep 工具的使用
- -c:表示打印符合要求的行数
- -i:忽略大小写
- -n:输出符合要求的行及其行号
- -v:打印不符合要求的行
- -A:后+一个数字(有无空格都可以),如-A2表示打印符合要求的行以及下面两行
- -B:后+一个数字,如-B2表示打印符合要求的行以及上面两行
- -C:后+一个数字,如-C2表示打印符合要求的行以及上下各两行
- 过滤出带有某个关键词的行,并输出行号:
# grep -n 'root' /etc/passwd
- 过滤出不带有某个关键词的行,并输出行号:
# grep -nv 'nologin' /etc/passwd
- 过滤出所有不包含数学的行:
# grep -v '[0-9]' /etc/inittab
- 过滤出所有包含数学的行:
# grep '[0-9]' /etc/inittab
- 过滤掉所有以#开头的行:
#grep -v '^#' /etc/sos.conf
//含空行 - 过滤掉所有空行和以#开头的行:
#grep -v '^#' /etc/sos.conf |grep -v '^$'
- 过滤出任意一个字符和重复字符:
grep 'r.o' /etc/passwd
//r.o,表示r与o之间有一个任意字符的行过滤出来 -
#grep 'ooo*' /etc/passwd
:表示0个或多个*前面的字符 - 指定要过滤出的字符出现次数:
#grep 'o\{2\}' /etc/passwd
- 过滤出一个或多个指定的字符:
# egrep 'o+' test.txt
- 过滤出0个或一个指定的字符:
# egrep 'o?' text.txt
;# egrep 'ooo?' text.txt
- 过滤出字符串1或者字符串2:
egrep 'aaa|111|ooo' text.txt
- egrep中()的应用:
egrep 'r(oo|at)o' text.txt
- sed工具的使用
- 打印某行,格式为
sed -n 'n'p filename
//单引号内的n是一个数字,表示第几行。-n选项的作用是知显示我们要打印的行 - 把所有行都打印出来:
sed -n '1,$'p filename
- 打印包含某个字符串的行:
sed -n '/root/'p test.txt
- 删除某些行:
#sed '1'd test.txt
- 替换字符或者字符串:
#sed '1,2s/ot/to/g' test.txt
//s表示替换;g表示本行全局替换,若不加则指替换本行出现的第一个;/分隔符(还有#和@)
- 删除文档中所有的数字和字母
#sed 's/[0-9a-zA-Z]//g' test.txt
- 调换两个字符串的位置:
sed 's/\(rot\)\(.*\)\(bash\)/\3\2\1/' test.txt
//“()”在sed里属特殊符号,必须在前面加转义符“\”,替换是则写成\1 、\2、 \3的形式 - 直接修改文件的内容:
sed -i 's/ot/to/g' test.txt
- awk工具的使用
- 截取文档中的某个段:
head -n2 test.txt |awk -F ':' '{print $1}'
//-F是指定分隔符,"$1
"为第一个字段,但“$0
”表示整行。 - 匹配字符或者字符串:
#awk '/oo/' text.txt
- 条件操作符:
#awk -F ':' '$3=="o"' /etc/passwd
//"!="表示不等于;“&&”表示并且;“||”表示或者 - awk的内置变量,常用变量有OFS、NF、NR、-F,NF表示用分隔符分隔后一共多少段,NR表示行号