### Linux Grep 常用命令格式详解 在Linux系统中,`grep`是一个非常强大的文本搜索工具,它能够帮助用户快速地在文件或标准输入中查找指定的字符串或模式。下面将详细介绍`grep`的一些常见用法及其应用场景。 #### 1. 搜索指定字符串 最简单的使用方式是直接搜索一个字符串,例如: ```bash grep "sort" *.doc ``` 这条命令会在当前目录下的所有`.doc`文件中搜索包含“sort”的行并显示出来。 #### 2. 统计匹配行数 通过添加`-c`选项可以统计匹配行的数量,例如: ```bash grep -c "48" data.doc ``` 此命令会返回文件`data.doc`中包含“48”的行数。 #### 3. 显示匹配行的行号 如果希望同时看到匹配行的具体位置(即行号),可以使用`-n`选项: ```bash grep -n "48" data.doc ``` 这条命令会列出文件`data.doc`中包含“48”的每一行以及它们对应的行号。 #### 4. 排除特定内容 使用`-v`选项可以排除含有某个字符串的所有行: ```bash grep -v "48" data.doc ``` 这条命令会输出文件`data.doc`中除了包含“48”的所有行。 #### 5. 忽略大小写 当进行搜索时忽略大小写的差异,可以使用`-i`选项: ```bash grep -i "ab" data.doc ``` 这条命令会返回文件`data.doc`中所有包含“ab”或“AB”的行。 #### 6. 使用扩展正则表达式 使用`-E`选项可以启用扩展正则表达式来执行更复杂的模式匹配,例如: ```bash grep -E '[239].' data.doc ``` 这条命令会匹配所有以2、3或9开头的行,这里的`[239]`是一个字符类,`.`表示任意单个字符。 #### 7. 匹配不包含特定模式的行 使用`-v`结合正则表达式可以匹配不包含特定模式的行: ```bash grep -v '^[^48]' data.doc ``` 这条命令会匹配所有不以数字4或8开头的行,其中`^`表示行的开始,`[^48]`表示不以4或8开头的任意字符。 #### 8. 多模式匹配 使用`-E`选项可以实现多个模式的匹配,例如: ```bash grep -E '219|216' data.doc ``` 这条命令会匹配所有包含219或216的行。 ### 高级用法示例 #### 示例一:使用管道和其他命令组合 结合其他命令如`awk`、`cut`、`tr`等,可以完成更复杂的数据处理任务,例如: ```bash ifconfig | grep -E 'ppp|P-t-P' | tr -s '' | cut -d '' -f1,4 ``` 这条命令首先通过`ifconfig`获取网络接口信息,然后使用`grep -E`过滤出包含“ppp”或“P-t-P”的行,接着通过`tr -s ''`去除多余空格,最后利用`cut -d '' -f1,4`提取出第1和第4字段。 另一种实现方法是使用`awk`来提取数据: ```bash ifconfig | grep -E 'ppp|P-t-P' | awk '{print $1, $3}' ``` #### 示例二:使用`cut`与`awk`处理数据 当需要处理表格或分隔符分割的数据时,可以使用`cut`或`awk`,例如: ```bash cat test.txt | cut -d '' -f3 ``` 这条命令会读取文件`test.txt`的内容,并按空白字符分隔后输出第三列。 为了去除多余空格,可以先使用`tr -s ''`去除多余空格,再使用`cut`提取特定字段: ```bash cat test.txt | tr -s '' | cut -d '' -f3 ``` 另一种实现方法是直接使用`awk`来提取第三列: ```bash cat test.txt | awk '{print $3}' ``` ### 总结 以上就是关于Linux下`grep`命令的一些基本用法及高级应用。通过灵活运用这些命令,用户可以在日常工作中高效地处理各种文本数据。需要注意的是,在使用`grep`时,确保输入的字符串或模式正确无误是非常重要的。此外,还可以结合其他命令进一步提高数据处理的能力。
-c 只输出匹配行的计数
-i 不区分大小写(用于单字符)
-n 显示匹配的行号
-v 不显示不包含匹配文本的所以有行
-s 不显示错误信息
-E 使用扩展正则表达式
更多的选项请查看:man grep
常用grep实例
(1)多个文件查询
grep "sort" *.doc #见文件名的匹配
(2)行匹配:输出匹配行的计数
grep -c "48" data.doc #输出文档中含有48字符的行数
(3)显示匹配行和行数
grep -n "48" data.doc #显示所有匹配48的行和行号
(4)显示非匹配的行
grep -vn "48" data.doc #输出所有不包含48的行
(5)大小写敏感
grep -i "ab" data.doc #输出所有含有ab或Ab的字符串的行
正则表达式的应用
(1)正则表达式的应用 (注意:最好把正则表达式用单引号括起来)
grep '[239].' data.doc #输出所有含有以2,3或9开头的,并且是两个数字的行
(2)不匹配测试
grep '^[^48]' data.doc #不匹配行首是48的行
(3)使用扩展模式匹配
grep -E '219|216' data.doc
awk 以空格为分割域时,是以单个或多个连续的空格为分隔符的;
cut则是以单个空格作为分隔符,如果想让cut以单个或多个连续的空格为分隔符
则需要加上tr -s ' '
如:ifconfig |grep -E 'ppp|P-t-P'|tr -s ' '|cut -d ' ' -f 1,4
- 粉丝: 1
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Advanced Culling System v2.0.1
- Matpower中IEEE标准算例case118
- Mesh Baker v3.36.1
- 2_base.apk.1
- MOUDBUS通讯程序模板数据变化后写优先
- labview编写的数据回放软件,支持多曲线回放,支持曲线缩放,支持曲线打标签,支持曲线勾选可见不可见,支持点击曲线加粗显示,支
- 电源环路的计算、环路补偿、环路仿真 一直以来,环路的计算和补偿都是开关电源领域的“难点”,很多做开关电源研发的工程师要么对环路一
- 本课程基于Abaqus,应用两种加载方式一-FluidCavity与Pressure分别介绍了气动驱动软体机器人仿真分析流程
- 基于FPGA的自适应滤波器FIR IIR滤波器LMS NLMS RLS算法 FxLMS 分数阶 本设计是在FPGA开发板上实现
- 无人船 无人艇路径跟踪控制 Matlab Simulink效果 基于Foseen船舶模型,LOS制导子系统+反步控制器制作