查找文本内容命令 grep
程序员文章站
2022-06-22 19:57:37
...
grep算是一个十分常用的linux命令了,用于查找文本,是加强版的ctrl+F,下面介绍一些常用的命令参数。
1. 显示所在行数、文件名、最大匹配个数等。
➜ ~ cat settings.json
{
"window.zoomLevel": 0,
"editor.fontSize": 14,
"breadcrumbs.enabled": true,
"editor.renderWhitespace": "none",
"terminal.integrated.rendererType": "canvas",
"terminal.integrated.fontWeightBold": "normal",
"editor.minimap.enabled": false,
"workbench.activityBar.visible": true,
"terminal.integrated.shell.osx": "/bin/zsh"
}%
cat是打印文本内容的命令,这里不详述,主要是为了和grep的查找结果做对照。
- grep -n [string] [file]: 显示[string]在[file]文件中的所在行数及内容,这里中括号[string]表示传入字符串,其他类似。
➜ ~ grep -n true settings.json
4: "breadcrumbs.enabled": true,
9: "workbench.activityBar.visible": true,
- grep -H [string] [file]: 显示[string]在[file]文件中的所在文件及内容
➜ ~ grep -H true settings.json setting1.json
settings.json: "breadcrumbs.enabled": true,
settings.json: "workbench.activityBar.visible": true,
setting1.json: "breadcrumbs.enabled": true,
- grep -m [num] [string] [file]: 显示[string]在[file]文件中出现[num]次的所在文件及内容。
➜ ~ grep -m 1 true settings.json
"breadcrumbs.enabled": true,
➜ ~ grep -m 2 true settings.json
"breadcrumbs.enabled": true,
"workbench.activityBar.visible": true,
- grep -v [string] [file]: 在[file]文件中查找不含有[string]的内容
➜ ~ grep -v true settings.json
{
"window.zoomLevel": 0,
"editor.fontSize": 14,
"editor.renderWhitespace": "none",
"terminal.integrated.rendererType": "canvas",
"terminal.integrated.fontWeightBold": "normal",
"editor.minimap.enabled": false,
"terminal.integrated.shell.osx": "/bin/zsh"
}
- grep -e [string1] -e [string2] [file]: 在[file]文件中查找含有[string1]或含有[string2]的行
➜ ~ grep -e enable -e true settings.json
"breadcrumbs.enabled": true,
"editor.minimap.enabled": false,
"workbench.activityBar.visible": true,
- grep -i: 不区分大小写查找
- grep -w: 字符串完全匹配
- grep -C [num]: 展示匹配行上下[num]行内容
2. 文件及目录查找限制
- grep -l [string] [files]: 在各文件[files]中展示含有[string]的文件名
- grep -L [string] [files]: 在各文件[files]中展示不含有[string]的文件名
➜ ~ grep -l true settings.json instance.csv
settings.json
➜ ~ grep -L true settings.json instance.csv
instance.csv
- grep [string] -R [dir]: 在目录[dir]下查找含有[string]的行数
➜ ~ grep true -R setting
setting/settings.json: "breadcrumbs.enabled": true,
setting/settings.json: "workbench.activityBar.visible": true,
3. 多条件查找
- 命令可以叠加使用,如既展示文件名又展示行数,并且限制展示个数
➜ ~ grep -Hn -m 2 true setting1.json settings.json
setting1.json:4: "breadcrumbs.enabled": true,
settings.json:4: "breadcrumbs.enabled": true,
- grep -v -e [string1] -e [string2] [file] :查找既不含string1又不含string2的行内容
➜ ~ grep -v -e enable -e true settings.json
{
"window.zoomLevel": 0,
"editor.fontSize": 14,
"editor.renderWhitespace": "none",
"terminal.integrated.rendererType": "canvas",
"terminal.integrated.fontWeightBold": "normal",
"terminal.integrated.shell.osx": "/bin/zsh"
}
- grep [string1] [file] | grep [string2] :查找既含有string1又含有string2的行内容,这里要用到通道符'|',简单说就是'|'前面命令的输出作为'|'后面命令的输入,
➜ ~ grep enable settings.json | grep true
"breadcrumbs.enabled": true,
- grep -l [string] -R [dir]: 查找目录[dir]下含有[string]的文件名
➜ ~ grep -l true -R setting
setting/settings.json