《SED_单行脚本快速参考》的_awk_实现.txt )
### SED与AWK在文本处理中的应用对比 #### 标题解读 - **《SED_单行脚本快速参考》的_awk_实现**:这个标题表明文档旨在比较和展示如何使用`awk`来实现通常由`sed`执行的任务。`sed`(Stream Editor)是一种流编辑器,主要用于文本数据的格式化、过滤、替换等操作;而`awk`则是一种更强大的文本处理工具,可以执行复杂的条件判断和模式匹配。 #### 描述解析 - **sed using awk**:这句话明确指出本文档的目标是使用`awk`来模拟`sed`的功能。通过具体的例子来展示两者之间的转换方法,帮助读者理解它们之间的相似性和差异性。 #### 知识点详述 ##### 基础命令对比 - **删除空白行**: - `sed`命令:`sed '/^$/d'`(删除所有空白行) - `awk`命令:`awk '!/^$/{print $0}'`(同样用于删除所有空白行) - **在每行后添加换行符**: - `sed`命令:`sed 'G'` - `awk`命令:`awk '{printf("%s\n\n",$0)}'` - **删除连续重复行**: - `sed`命令:`sed 'n;d'` - `awk`命令:`awk '{f=!f;if(f)print $0}'`(这里`f`为一个标志变量,用于记录当前行是否与上一行相同) - **根据正则表达式进行操作**: - 使用正则表达式前的操作:`sed '/regex/{x;p;x;}'` 和 `awk '{if(/regex/)printf("\n%s\n",$0);else print $0}'` - 使用正则表达式后的操作:`sed '/regex/G'` 和 `awk '{if(/regex/)printf("%s\n\n",$0);else print $0}'` - 使用正则表达式前后操作:`sed '/regex/{x;p;x;G;}'` 和 `awk '{if(/regex/)printf("\n%s\n\n",$0);else print $0}'` ##### 文件格式转换 - **从Unix格式转换到DOS格式**(将行尾从LF转换为CR/LF): - `sed`命令:`sed 's/$/`echo -e \\\r`/'` - `awk`命令:`awk '{printf("%s\r\n",$0)}'` - **从DOS格式转换到Unix格式**(将行尾从CR/LF转换为LF): - `sed`命令:`sed 's/\x0D$//'` - `awk`命令:`awk '{sub(/\x0D$/,"");print $0}'` ##### 文本修饰 - **去除每行开头的空白字符**: - `sed`命令:`sed 's/^[\t]*//'` - `awk`命令:`awk '{sub(/^[\t]+/,"");print $0}'` - **去除每行结尾的空白字符**: - `sed`命令:`sed 's/[\t]*$//'` - `awk`命令:`awk '{sub(/[\t]+$/,"");print $0}'` - **同时去除每行开头和结尾的空白字符**: - `sed`命令:`sed 's/^[\t]*//;s/[\t]*$//'` - `awk`命令:`awk '{sub(/^[\t]+/,"");sub(/[\t]+$/,"");print $0}'` ##### 行宽限制 - **设置行宽为79个字符**: - `sed`命令:`sed -e:a -e's/^.\{1,78\}$/&/;ta'` - `awk`命令:`awk '{printf("%79s\n",$0)}'` - **居中对齐**(使每行在79个字符内居中显示): - `sed`命令:使用多步`sed`命令实现 - `awk`命令:`awk '{for(i=0;i<39-length($0)/2;i++)printf("");printf("%s\n",$0)}'` ##### 替换操作 - **替换每行的第一个“foo”为“bar”**: - `sed`命令:`sed 's/foo/bar/4'`(其中`4`表示替换第一个匹配项) - `awk`命令:`awk '{gsub(/foo/, "bar", 1); print $0}'`(`gsub`函数的第三个参数为1表示只替换第一次出现的匹配项) ### 总结 通过对这些示例的分析,我们可以看到`sed`和`awk`在许多文本处理任务中都可以互相替代。然而,`awk`因其内置的强大功能(如数组支持、条件判断等),使得在处理更复杂的逻辑时更加灵活和强大。对于简单的文本替换和格式化操作,`sed`通常更为直观且易于编写。通过学习这两种工具的特点和用法,开发者可以根据具体需求选择最适合的工具来完成任务。
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C#MVC4通用企业门户网站源码数据库 SQL2008源码类型 WebForm
- python《基于ChineseBERT的中文文本纠错(监督学习模型)》+项目源码+文档说明
- 配置深度学习环境,里面有GPU和CPU的环境下的讲解!
- windows下C++动态库的封装和调用全部源码和工程
- 基于Huggingface的医疗领域命名实体识别+python项目源码+文档说明
- 三、计算机视觉-03LeNet5及手势识别案例《手势数据集》
- 智能车-车载工控机外部通信协议详解
- C#VS2012通用权限管理系统源码数据库 SQL2012源码类型 WebForm
- 基于多头选择和词-词关系分类的NER统一框架+python项目源码+文档说明
- 基于UNER-W2NER 的命名实体识别+python项目源码+文档说明