正则表达式

  Linux文本处理(grep,sed)_第1张图片

grep

  全面搜索正则表达式并把行打印出来是一种强大的文本搜索工具
  能使用正则表达式搜索文本,并把匹配的行打印出来
Linux文本处理(grep,sed)_第2张图片

grep命令常见用法


(1)在文件中搜索一个单词,命令会返回一个包含“zhao_xg”的文本行
   grep zhao_xg file_name
   grep "zhao_xg" file_name

(2)在多个文件中查找
   grep "zhao_xg" file_1 file_2 file_3 ...

(3)输出除之外的所有行
   grep -v "zhao_xg" file_name

(4)标记匹配颜色
   grep "zhao_xg" file_name --color=auto

(5)使用正则表达式
   grep -E "[1-9]+" 或 egrep "[1-9]+"

(6)只输出文件中匹配到的部分
   echo this is a test line. | grep -o -E "[a-z]+." line.
   echo this is a test line. | egrep -o "[a-z]+."line.

(7)统计文件或者文本中包含匹配字符串的行数
   grep -c "text" file_name

(8)输出包含匹配字符串的行数
   grep "text" -n file_name 或 cat file_name | grep "text" -n

   #多个文件
   grep "text" -n file_1 file_2

(9)搜索多个文件并查找匹配文本在哪些文件中
   grep -l "text" file1 file2 file3...

sed

  文本处理中流编辑器工具,配合正则表达式使用
  把当前处理的行存储在临时缓冲区“模式空间”中,sed命令处理缓冲区中的内容,把缓冲区的内容送往屏幕,接着处理下一行,直到文件末尾,文件内容并没有改变
Linux文本处理(grep,sed)_第3张图片

sed命令常见用法


(1)替换文本中的字符串:
   sed 's/book/books/' file

(2)使用后缀 /g 标记会替换每一行中的所有匹配:
   sed 's/book/books/g' file

(3)以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符:
   sed 's:test:TEXT:g'
   sed 's|test|TEXT|g'

(4)删除空白行:
   sed '/^$/d' file

(5)所有以192.168.0.1开头的行都会被替换成它自已加localhost:
   sed 's/^192.168.0.1/&localhost/' file
   192.168.0.1localhost

(6)love被标记为1,所有loveable会被替换成lovers,并打印出来:
   sed -n 's/(love)able/\1rs/p' file

(7)所有在模板test和check所确定的范围内的行都被打印:
   sed -n '/test/,/check/p' file

(8)打印奇数行或偶数行
   sed -n 'p;n' test.txt #奇数行
   sed -n 'n;p' test.txt #偶数行