正则表达式

  1. 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
  1. 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
  1. 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表示行号