一. 查找文本
1.使用grep查找
如果你想在当前目录下查找hello,world!字符串,可以这样:
grep -rn "hello,world!" *
*: 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
下面是一些有意思的命令行参数:
- grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
- grep -l pattern files :只列出匹配的文件名,
- grep -L pattern files :列出不匹配的文件名,
- grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配
magic,而不是magical), - grep -C number pattern files :匹配的上下文分别显示[number]行,
- grep pattern1 | pattern2 files :显示匹配
pattern1或pattern2的行, - grep pattern1 files | grep pattern2 :显示既匹配
pattern1又匹配pattern2的行。
这里还有些用于搜索的特殊符号:
\< 和 \> 分别标注单词的开始与结尾。
例如:
grep man *会匹配 Batman、manic、man等,
grep '\<man' * 匹配manic和man,但不是Batman,
grep '\<man\>'只匹配man,而不是Batman或manic等其他的字符串。
'^':指匹配的字符串在行首,
'$':指匹配的字符串在行尾,
2. xargs配合grep查找
find -type f -name '*.php'|xargs grep 'GroupRecord'
这个比较常用, 意思是在当前目录下查询php文件,然后再过滤GroupRecord
二. 批量替换文本
在vi或者vim模式下使用,语法如下:
%s/a/w/g
其中s为:substitute,%表示所有行,g表示global
示例
%s/data/devicelog/g
将data替换成devicelog,注意如果有/,需要转义\/