Linux命令_grep & 快速查找关键字、文件名
目录
1. 语法
1.1. 常用参数
2. 常见用法
2.1. 查找关键字
2.2. 取反
2.3. 额外输出关键字上下 2 行
2.4. 额外输出关键字上面 1 行
2.5. 额外输出关键字下面 1 行
2.6. 输出关键字总行数
2.7. 输出行号
2.8. 忽略大小写
2.9. 正则匹配
3.组合使用
4. 文本三剑客其他命令
1. 语法
grep [选项] {关键字} 文件名
1.1. 常用参数
-i:忽略大小写
-n:输出关键字行号
-v:取反,不输出包含关键字内容
-r:递归查找,用于查找多个文件是否包含某个关键字
-E:使用正则表达式
-A{num}:额外输出关键字下面 num 行
-B{num}:额外输出关键字上面 num 行
-C{num}:额外输出关键字上/下各 num 行,也可以直接使用 -{num}
-c:计算关键字行数
-h:不显示文件名
-l:仅输出符合关键字文件名
-L:输出不符合关键字文件名
2. 常见用法
2.1. 查找关键字
grep 'b' file.txt # 输出包含b的行
2.2. 取反
grep -v 'b' file.txt # 不输出包含b的行
2.3. 额外输出关键字上下 2 行
grep -C2 '3' file.txt
grep -2 '3' file.txt # 上述简写
2.4. 额外输出关键字上面 1 行
grep -B1 '3' file.txt
2.5. 额外输出关键字下面 1 行
grep -A1 '1' file.txt
2.6. 输出关键字总行数
grep -c 'b' file.txt
2.7. 输出行号
grep -n 'b' file.txt
2.8. 忽略大小写
grep -i 'B' file.txt
2.9. 正则匹配
字符解释用法^匹配以什么开始grep -E '^ab' 匹配以ab开头的行$匹配以什么结尾grep -E 'ab$' 匹配以ab结尾的行.匹配任意一个字符grep -E 'a.c' 只匹配a与c之间拥有一个字符的行.+匹配1次或多次grep -E 'a.+c' 匹配a与c之间任意字符的行,不包含ac*匹配0次或多次grep -E 'a*c' 匹配a与c之间任意字符的行,包含ac|相当于 orgrep -E 'ab|ac' 匹配包含ab或ac的行[]匹配括号中任意一个字符grep -E '[ac]' 匹配包含a或c的行[^]匹配非括号中任意一个字符grep -E '[^ac]' 匹配不包含a或c的行-[0-9] 匹配数字grep -E [0-9] 匹配包含数字的行[^0-9] 匹配非数字grep -E [^0-9] 匹配不包含数字的行[a-z] 匹配小写字符串grep -E [a-z] 匹配包含小写字符串的行[^a-z] 匹配非小写字符串grep -E [^a-z] 匹配不包含小写字符串的行[A-Z] 匹配大写字符串grep -E [A-Z] 匹配包含大写字符串的行[^A-Z] 匹配非大写字符串grep -E [^A-Z] 匹配不包含大写字符串的行()(a|b) 匹配括号中任意字符grep -E '0(a|b)1' 只匹配0a1和0b1的行(a)+ 匹配包含1个或多个agrep -E '0(a)+1' 匹配0和1之前1个或多个a,0a1、0aa1...{}{n} 指定匹配n个以上grep -E 'ab{2}' 匹配包含ab,且a或b连续为2次以上:abb{n,m} 指定匹配 n-m 个grep -E 'ab{2,3}' 匹配包含ab,且a或b连续为2-3次:abb、aaab
示例:
grep -E '^b' file.txt # 查找以b开头的行
grep -E 'b$' file.txt # 查找以b结尾的行
grep -E 'a|c' file.txt # 查找包含a或者c的行
3.组合使用
3.1. 查找当前目录下以a开头的文件,并显示文件名和行号
grep -rn '^1' ./
3.2. 显示指定目录下包含b的文件名
grep -rl 'b' /home/yt/shell/grep/
3.3. 查找指定文件中包含system的行/行号,不区分大小写
grep -in 'system' /etc/passwd
4. 文本三剑客其他命令
Linux命令_awk常用指南
Linux命令_sed常用指南