分类: LINUX
2015-10-28 09:17:10
有时候需要在一个目录下的缩影文件查找含有指定字符串的文件 及字符串在文件中的定位
Grep –r “pattern” .
grep –r –exclude=.svn “pattern” . 负略主目录下某个目录prune
find . –path “*/.svn” –prune –o –print | xargs grep “CodeType” -n
grep -A4 -B4 -r XXX *
grep 统计单词数量:
echo "he is a good man , is and is" | grep -o "is"
grep退出状态: 查看返回值$?
0: 表示成功;
1: 表示在所提供的文件无法找到匹配的pattern;
2: 表示参数中提供的文件不存在。
export LANG=zh_CN #设置当前的语言环境为中文。
grep '[a-z]\{9\}' testfile #打印所有包含每个字符串至少有9个连续小写字符的字符串的行。
grep '\(3\)\.[0-9].*\1 *\1' testfile 第一个字符是3,紧跟着一个句点,然后是任意一个数字,然后是任意个任意字符,然后又是一个3,然后是制表符,然后又是一个3,需要说明的是,下面正则中的\1表示\(3\)。
grep '\
grep '\' testfile #打印所有包含单词north的行。
grep -n '^south' testfile #-n选项在每一个匹配行的前面打印行号。
grep -i 'pat' testfile #-i选项关闭了大小写敏感。
grep -v 'Suan Chin' testfile #打印所有不包含Suan Chin的行。
grep -l 'ss' testfile #-l使得grep只打印匹配的文件名,而不打印匹配的行。
grep -c 'west' testfile #-c使得grep只打印有多少匹配模板的行。
grep -w 'north' testfile #-w只打印整个单词匹配的行。
grep -C 2 Patricia testfile #打印匹配行及其上下各两行。
grep -B 2 Patricia testfile #打印匹配行及其前两行。
grep -A 2 Patricia testfile #打印匹配行及其后两行。
3.把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。
grep -xvf a b | tee c | wc -l
grep -P "(.*)(\..*)" 支持perl正则表达式
grep 匹配tab:
grep $'\t'next-server /etc/dhcp/dhcpd.conf
-exec: 对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格,同时两个{}之间没有空格
-ok: 其主要功能和语法格式与-exec完全相同,唯一的差别是在于该选项更加安全,因为它会在每次执行shell命令之前均予以提示,只有在回答为y的时候,其后的shell命令才会被继续执行。需要说明的是,该选项不适用于自动化脚本,因为该提供可能会挂起整个自动化流程。
find . -ctime -2 -exec ls -l {} \;#找出距此时2天之内创建的文件,同时基于find的结果,应用-exec之后的命令,即ls -l,从而可以直接显示出find找到文件的明显列表。
find . -name "*.log" -mtime -1 -exec rm -f {} \; #找到文件名为*.log, 同时文件数据修改时间距此时为1天之内的文件。如果找到就删除他们。有的时候,这样的写法由于是在找到之后立刻删除,因此存在一定误删除的危险。
find . -name "*.dat" -mtime -1 -ok rm -f {} \; 在控制台下,为了使上面的命令更加安全,我们可以使用-ok替换-exec,见如下示例: