一、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前的符号为`而非'