### Shell正则表达式之grep、sed、awk实操笔记 #### 一、概述 本文主要探讨了在Shell脚本编程中如何运用`grep`、`sed`与`awk`结合正则表达式来实现一些具体的需求。这些工具在文本处理方面极其强大,通过灵活运用它们,可以高效地完成文本搜索、替换、格式化等任务。 #### 二、grep实操笔记 `grep`是一种强大的文本搜索工具,它可以搜索固定字符串或符合正则表达式的字符串。下面详细介绍了一些`grep`命令的实际应用案例。 ##### 1. 搜索特定字符串 "the" - **命令**: `grep -n 'the' regular_express.txt` - **功能**: 在文件`regular_express.txt`中搜索包含字符串"the"的所有行,并显示行号。 ##### 2. 反向搜索特定字符串 "the" - **命令**: `grep -vn 'the' regular_express.txt` - **功能**: 搜索不包含"the"的所有行,并显示行号。其中`-v`选项表示反向匹配。 ##### 3. 忽略大小写搜索 "the" - **命令**: `grep -in 'the' regular_express.txt` - **功能**: 不区分大小写地搜索字符串"the"。 ##### 4. 利用括号[]来搜寻集合字符 - **命令**: `grep -n 't[ae]st' regular_express.txt` - **功能**: 搜索含有`t[ae]st`模式的行。这里的`[ae]`表示要么是`a`要么是`e`,即匹配`tast`或`test`。 - **扩展**: 若要搜索包含`oo`但不是`goo`的行,可以使用命令`grep -n '[^g]oo' regular_express.txt`。 - **进一步**: 若要搜索包含`oo`但其前一个字符不是小写字母的行,可以使用命令`grep -n '[^a-z]oo' regular_express.txt`。 - **示例**: 使用命令`grep -n '[a-zA-Z0-9]' regular_express.txt`搜索包含任何英文字母或数字的行。 - **高级用法**: 使用命令`grep -n '[^[:lower:]]oo' regular_express.txt`搜索包含`oo`但其前一个字符不是小写字母的行。这里`[:lower:]`是指所有小写字母。 ##### 5. 显示行首为 "the" 的字符串 - **命令**: `grep -n '^the' regular_express.txt` - **功能**: 搜索以"the"开头的行。 ##### 6. 显示行首为小写字母的字符串 - **命令**: `grep -n '^[a-z]' regular_express.txt` - **功能**: 搜索以小写字母开头的行。 ##### 7. 显示行尾为点 . 的那一行 - **命令**: `grep -n '\.$' regular_express.txt` - **功能**: 搜索以`.`结束的行。 ##### 8. 显示第5-9行数据 - **命令**: `cat -An regular_express.txt | head -n 10 | tail -n 6` - **功能**: 先使用`cat -An`将文件加上行号输出,然后使用`head -n 10`获取前10行,再使用`tail -n 6`获取最后6行,从而得到第5-9行。 ##### 9. 显示空白行 - **命令**: `grep -n '^$' regular_express.txt` - **功能**: 搜索空行。 #### 三、sed实操笔记 `sed`是一种流编辑器,它能够对输入流(文本)进行编辑。下面介绍了一些基本的`sed`命令。 ##### 示例1: 替换特定字符串 - **命令**: `sed 's/pattern/replacement/g' file` - **功能**: 将文件`file`中的所有`pattern`替换为`replacement`。 ##### 示例2: 删除特定行 - **命令**: `sed '/pattern/d' file` - **功能**: 删除文件`file`中包含`pattern`的所有行。 ##### 示例3: 插入新行 - **命令**: `sed 'N;s/\n/ /' file` - **功能**: 将文件`file`中的每两行合并为一行。 #### 四、awk实操笔记 `awk`是一种用于报表生成的脚本语言,它非常适合处理结构化的数据。 ##### 示例1: 计算字段总和 - **命令**: `awk '{sum += $1} END {print sum}' file` - **功能**: 计算文件`file`第一列的总和。 ##### 示例2: 提取特定列 - **命令**: `awk '{print $3}' file` - **功能**: 打印文件`file`第三列的内容。 #### 五、总结 通过以上实例可以看出,`grep`、`sed`和`awk`都是非常实用且功能强大的文本处理工具。熟练掌握这些工具的使用方法,可以在日常工作中大大提高效率。希望本文提供的实操笔记能帮助大家更好地理解和使用这些工具。
- 粉丝: 6
- 资源: 910
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助