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的行

Linux命令_grep & 快速查找关键字、文件名_第1张图片

 

 

2.2. 取反

grep -v 'b' file.txt    # 不输出包含b的行

Linux命令_grep & 快速查找关键字、文件名_第2张图片

 

 

2.3. 额外输出关键字上下 2 行

grep -C2 '3' file.txt
grep -2 '3' file.txt    # 上述简写

Linux命令_grep & 快速查找关键字、文件名_第3张图片

 

 

2.4. 额外输出关键字上面 1 行

grep -B1 '3' file.txt

Linux命令_grep & 快速查找关键字、文件名_第4张图片

 

 

2.5. 额外输出关键字下面 1 行

grep -A1 '1' file.txt

Linux命令_grep & 快速查找关键字、文件名_第5张图片

 

 

2.6. 输出关键字总行数

grep -c 'b' file.txt

Linux命令_grep & 快速查找关键字、文件名_第6张图片

 

 

2.7. 输出行号

grep -n 'b' file.txt

Linux命令_grep & 快速查找关键字、文件名_第7张图片

 

 

2.8. 忽略大小写

grep -i 'B' file.txt

Linux命令_grep & 快速查找关键字、文件名_第8张图片

 

 

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
| 相当于 or grep -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个或多个a grep -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的行

Linux命令_grep & 快速查找关键字、文件名_第9张图片

 

 

 

3.组合使用

3.1. 查找当前目录下以a开头的文件,并显示文件名和行号

grep -rn '^1' ./

Linux命令_grep & 快速查找关键字、文件名_第10张图片

 

 

3.2. 显示指定目录下包含b的文件名

grep -rl 'b' /home/yt/shell/grep/

 

 

3.3. 查找指定文件中包含system的行/行号,不区分大小写

grep -in 'system' /etc/passwd

 

 

 

4. 文本三剑客其他命令

Linux命令_awk常用指南

Linux命令_sed常用指南

你可能感兴趣的:(Linux命令,linux,运维,服务器)