linux 文本搜索命令 grep

grep是一个Linux / Unix命令行工具,用于在指定的文件中搜索字符串。文本搜索模式被称为正则表达式。当它找到匹配项时,它将输出带有结果的行。在搜索大型日志文件时,grep命令非常方便。
grep一般用于查找文件中含有某些字符串的行,其命名格式如下

基础语法

 grep [OPTIONS] PATTERN [FILE...]

常用参数

  • -c: 只输出匹配行的数目
  • -h: 打印出匹配的行,但是不显示其文件名
  • -i: 不区分大小写
  • -l: 查询多文件的时候只输出包含匹配字符的文件名
  • -n: 打印匹配行以及行号
  • -v: 反向匹配,即显示不匹配的行
  • -w: 匹配整个单词,而不是整个字符串
  • -b: 显示匹配的位置
  • -o: 只显示匹配的字串,忽悠其他信息
  • -s: 不显示错误信息
  • -e exp:匹配多个
  • -E:使用正则匹配

常用示例

grep在linux使用过程中其常用使用实例:

  • grep递归查找/etc目录及其子目录中含有”user“字符的文件,并显示文件与其含有”user“字符串的行
grep -r "user" /etc
  • 只匹配一个单词,而不是做为单词的一部分去匹配
grep -w user /etc/passwd
  • 查找两个字符串
grep "user|USER" /etc/passwd
  • 统计匹配行的数量
grep -c "user" /etc/passwd
  • 统计匹配项的数量:
    grep -o只会输出匹配项,而忽略行;wc可以算出行数:
grep -o 'needle' file | wc -l
  • 显示查到的行在文件中的行号
grep -n "user" /etc/passwd
  • 只显示不匹配的行
grep -v "user" /etc/passwd
  • 只输出包含的文件名而不输出文件行
grep -l "user" /etc/*

Was this helpful?

0 / 0

发表回复 0