二、LINUX文本处理三剑客之grep
1. grep一般格式:grep [选项] 基本正则表达式 [文件],其中基本正则表达式需要用引号引起来
- 引号引起来的作用:a、防止被误解为shell命令,b、可以用来查找多个单词组成的字符串
- grep选项:-c 只输出匹配行的计数
-i 不区分大小写
-h 查询多文件时不显示文件名
-l 查询多文件时只输出包含匹配字符的文件名
-n 显示匹配行及行号
-s 不显示不存在或者无匹配文本的错误信息
-v 显示不包含匹配文本的所有行
- 查询多个文件:如果要在当前目录下所有.doc文件中查找字符串“sort”,方法如下:grep "sort" *.doc
- 行匹配:grep -c "good" data.f 返回good输出的次数
- 行数:grep -n "good" data.f 显示满足匹配模式的所有行行数
- 显示非匹配行:grep -v "48" data.f
- 精确匹配:grep "\<file\>" data.f 精确匹配file,file前后必须为空格或者<enter><tab>
- 大小写不敏感:grep -i "Fille" data.f 也能匹配到file
- POSIX字符类:[:alnum:]匹配字母和数字,<=>[A-Za-z0-9]
[:digit:] 匹配十进制数字,<=>[0-9]
[:alpha:]匹配字母,<=> [A-Za-z]
[:lower:]匹配小写字母,<=> [a-z]
[:upper:]匹配大写字母,<=> [A-Z]
[:space:]匹配空白字符(空格和水平制表符)
2.grep与简单的管道,重定向(以后还要做详细介绍)
1. grep与passwd文件,重定向(>,>>)
$ grep "songsongsong" /etc/passwd > ~/temp.txt //将grep的输出信息重定向到temp.txt,覆盖
$ grep "songsongsong" /etc/passwd > >~/temp.txt //将grep的输出信息重定向到temp.txt,末尾添加
2. grep与ps命令,管道
$ ps ax | grep "dongbala" //将ps ax输出的信息作为grep "dongbala"的输入,然后正则后输出到屏幕
3.grep与字符串
$ STR="Mary Joe Peter Pauline"
$ echo $STR | grep "Mary" //echo打印信息 作为grep "Mary" 的输入进行正则匹配,并将信息打印到屏幕
Mary Joe Peter Pauline
4.grep与grep
$ grep "asads" test.txt | grep "aaaaa"