一、grep:

1、grep是Linux下搜索文件文本的工具,能使用正则表达式搜索文本,并把匹配的文本所在位置打印下来。

2、使用格式:grep [OPTION]... PATTERN [FILE]...

[OPTION]常用参数:

-n或 --line-number        打印所在行数编号

-r 或 --recursive           等同于 --directories=recurse,表示指定要查找的是目录而非文件时

-L 或 --files-without-match    打印内容不符合指定的范本样式的文件名称

-l 或 --files-with-matches 只打印存在符合指定的范本样式内容的文件名称

-w 或 --word-regexp        只显示全字符合的列

-x 或  --line-regexp        只显示全列符合的列

-a 或  --text             不要忽略二进制文件,等同于--binary-files=text

-I                       忽略二进制文件,等同于--binary-files=without-match

-i 或  --ignore-case         忽略字符大小写

更多参数详见--help。

3、pattern正则表达式常见参数:    

\ : 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列     '\\' 匹配 "\",而 '\(' 则匹配 "("。

. : 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。

* : 有字符,长度可以为0。

+ : 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。

? : 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。

^ : 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。

| : 指明两项之间的一个选择。要匹配 |,请使用 \|。

\<:从匹配正则表达 式的行开始。

\>:到匹配正则表达式的行结束。

 4、举例:

grep -i 'hello world' hello.c hello.h  :显示在hello.c、hello.h文件中查找到字符串的行,并忽略大小写

grep 'hello' d*  :显示在d开头的文件中查找到字符串的行

grep -rl 'hello' /home/hello/  :显示在对应文件夹下的文件中查找到字符串的文件,并打印出文件名字

二:sed:

1、使用sed命令可以进行字符串的批量替换。

2、使用格式:sed [OPTION]... {script-only-if-no-other-script} [input-file]...

[OPTION]常用参数

-i 直接在文件中替换,不打印到终端

3、可以指定替换文件

sed -i 's/hello/HELLO/g' hello.c     :将hello.c文件中的hello替换成HELLO

4、可以与grep连用在grep查找到的文件内进行替换

sed -i 's/hello/HELLO/g' `grep 'hello' -rl /home/hello/`   :将grep返回的文件中的hello替换成HELLO,其中grep前的符号为`而非'