shell编程:grep - 文本搜索利器(1)
目录
基础选项:
基本搜索 - 在指定文件中查找包含指定字符串的行
忽略大小写 - 查找包含指定字符串的行(忽略大小写)
显示行号 - 显示匹配行的行号
只显示匹配次数 - 统计匹配行的数量
反向匹配 - 显示不包含指定字符串的行
精确匹配整个单词 - 只匹配完整的单词
递归搜索目录 - 在当前目录及子目录中搜索
只显示文件名 - 显示包含匹配内容的文件名
基础选项:
基本搜索 - 在指定文件中查找包含指定字符串的行
grep "pattern" file.txt
表示在指定的file.txt文件中搜索包含pattern字符串的行

详细解释:
• grep:文本搜索命令
• "pattern":搜索模式,查找包含"pattern"字符串的行(一般使用双引号将字符串括起来)
• file.txt:目标文件
• 区分大小写,只匹配小写"pattern"(默认情况下区分大小写)
忽略大小写 - 查找包含指定字符串的行(忽略大小写)
grep -i "pattern" file.txt
表示在指定的file.txt文件中查找包含pattern的行,不区分pattern的大小写

详细解释:
• -i:忽略大小写选项
• 匹配"pattern"、"Pattern"、"PATTERN"等所有大小写变体
• echo -e "\n":输出换行符,美化输出格式
显示行号 - 显示匹配行的行号
grep -n "pattern" file.txt
表示在指定的文件file.txt中查找包含pattern字符串的行,并显示该行行号

详细解释:
• -n:显示行号选项
• 输出格式为"行号:匹配行内容"
• 便于定位匹配内容在文件中的位置
只显示匹配次数 - 统计匹配行的数量
grep -c "pattern" file.txt
表示在file.txt文件中查找包含pattern字符串的行数

详细解释:
• -c:计数选项
• 只输出匹配行的总数,不显示具体内容
• 用于快速统计出现频率
反向匹配 - 显示不包含指定字符串的行
grep -v "pattern" file.txt
表示在file.txt文件中查找不包含pattern的行

详细解释:
• -v:反向匹配选项(invert match)
• 输出所有不包含指定模式的行
• 用于过滤不需要的内容
这些选项都可以组合使用,比如 -vi 表示反向匹配选项且不区分大小写
精确匹配整个单词 - 只匹配完整的单词
grep -w "line" file.txt
表示在file.txt文件中只匹配包含line整个单词的行

详细解释:
• -w:单词边界匹配选项
• 只匹配完整的"line"单词,不匹配"line"作为其他单词的一部分(如"inline")
不加 -w 选项则匹配的时候会查找匹配字符串作为其他单词的一部分(如"inline"也会匹配到)
• 使用单词边界\b 实现
递归搜索目录 - 在当前目录及子目录中搜索
grep -r "pattern" ./
表示从当前工作目录开始递归搜索内容包含pattern字符串的文件

详细解释:
• -r:递归搜索选项
• 在当前目录(./)及其所有子目录中搜索
• 输出格式包含文件路径
使用 find 从根目录查找文件时不需要加 -r 选项
只显示文件名 - 显示包含匹配内容的文件名
grep -l "pattern" *.txt
表示查找所有内容包含pattern字符串的以.txt结尾的文件

详细解释:
• -l:只显示文件名选项
• 不输出匹配内容,只列出包含匹配项的文件名
• 通配符*.txt 匹配所有 txt 文件
这里的*是通配符,表示0到多个任意的字符