grep常用参数: 1. --version or -V grep的版本 2. -A +数字N 找到所有的匹配行,并显示匹配行后N行 3. -B 数字N 找到所有的匹配行,并显示匹配行前N行 4. -b 显示匹配到的字符在文件中的偏移地址 5. -C 是匹配找到的行和它前后各n行 6. -c 显示有多少行被匹配到 7. -e 可以使用多个正则表达式 8. -f FILEA FILEB FILEA在FILEAB中的匹配 9. -i 不区分大小写针对单个字符 10. -m 数字N 最多匹配N个后停止 11. -n 打印行号 12. -o 只打印出匹配到的字符 13. -R 搜索子目录 14. -v 显示不包括查找字符的所有行 15. --color 把匹配到的字符用颜色显示出来 --------------------------------------------------------------- grep 符号参数: 1. -s 错误信息不输出 2. -x 输出完全匹配内容 3. \ 忽略表达式中字符原有含义 4. ^ 匹配表达式的开始行 5. $ 匹配表达式的结束行 6. \< 从匹配表达式的行开始 7. \> 到匹配表达式的行结束 8. [ ] 单个字符(如[A] 即A符合要求) 9. [ - ] 范围;如[A-Z]即A,B,C一直到Z都符合要求 10. . 所有的单个字符 11. * 所有字符,长度可以为0 -------------------------------------------------------------- grep or 操作 #df -hT |grep  'sda1\|sda3' /dev/sda3     ext3    225G  162G   52G  76% / /dev/sda1     ext3    122M   12M  104M  11% /boot #df -hT |grep -e "sda1" -e "sda3" /dev/sda3     ext3    225G  162G   52G  76% / /dev/sda1     ext3    122M   12M  104M  11% /boot grep -E 'sda1|sda3' egrep 'sda1|sda3' ---------- grep and 操作 1. 使用 -E 'pattern1.*pattern2' grep命令本身不提供AND功能。但是,使用 -E 选项可以实现AND操作。 grep -E 'pattern1.*pattern2' filename grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename (其中一个pattern的顺序是指定的,个pattern的顺序不是固定的,可以是乱序的) 2. 使用多个grep命令 可以使用多个 grep 命令 ,由管道符分割,以此来实现 AND 语义 ---------- grep not 操作 1. 使用选项 grep -v 使用 grep -v 可以实现 NOT 操作。 -v 选项用来实现反选匹配的( invert match)。如,可匹配得到除下指定pattern外的所有lines grep -v 'pattern1' filename ---------- 先看man中介绍: -o, --only-matching: Show only the part of a matching line that matches PATTERN. -P, --perl-regexp: Interpret PATTERN as a Perl regular expression. 例如 # echo "helloworld123456"| grep -o -P '/d+' 返回 123456 #echo "helloworld123456"| grep -o -P '[a-z]+' 返回 helloworld -P 选项是利用PERL的正则语法进行匹配 删除文本中空行和空格组成的行及#号注释的行 #grep -Eiv "^#|^$" ssh_config