awk与sed命令实用技巧详解
需积分: 50 191 浏览量
更新于2024-09-17
收藏 178KB PDF 举报
"这篇文档详细介绍了awk和sek命令的使用,包括如何在文本行后添加空行、删除或增加特定模式后的空行、为文件行编号以及进行文本转换和替代等操作。awk和sed是Linux/Unix环境中常用的文本处理工具,它们能够方便地对文本文件进行模式匹配和数据处理。"
在文本处理中,awk和sed是两个非常强大的工具。awk主要用于处理结构化数据,通过模式匹配和动作来处理文本文件。sek(通常应该是sed,可能是输入错误)则是流编辑器,它可以逐行读取输入,对每一行执行指定的命令。
1. **文本间隔**:
- `sed G` 在每一行后面添加一个空行。
- `awk '{printf("%s\n\n",$0)}'` 同样的效果,使用awk实现。
- `sed '/^$/d;G'` 删除所有空行并确保每行后有一个空行。
- `awk '!/^$/{printf("%s\n\n",$0)}'` 类似功能,不过仅在非空行后添加空行。
- `sed 'G;G'` 在每一行后面增加两行空行。
- `awk '{f=!f;if(f)print $0}'` 删除所有偶数行,保留奇数行。
2. **插入空行**:
- `sed '/regex/{x;p;x;G;}'` 在匹配正则表达式"regex"的行前后各插入一个空行。
- `awk '{if(/regex/)printf("\n%s\n",$0);else print $0}'` 在匹配行后插入一个空行。
- `sed '/regex/{x;p;x;}'` 在匹配行前插入一个空行。
3. **编号**:
- `sed 'N;s/\n/\t/'` 为文件中的每一行进行编号,使用制表符对齐。
- `awk '{i++;printf("%d\t%s\n",i,$0)}'` 同样的编号功能,使用awk实现,简单左对齐。
- `sed 'N;s/^//;s/*\(.\{6,\}\)\n/\1/'` 为文件中的所有行编号,右端对齐,至少6位宽度。
- `awk '{i++;if(!/^$/)printf("%d%s\n",i,$0);else print}'` 只显示非空行的编号。
4. **计算行数**:
- `sed -n '$='` 计算文件的行数,不打印其他内容。
- `awk '{i++}END{print i}'` 通过awk计算行数,最后打印总行数。
5. **文本转换和替代**:
- 转换DOS新行符(CR/LF)为Unix格式:`sed 's/.$/\r/'`,这会把Unix文件中的每个行尾的LF(\n)替换为DOS的CR/LF(\r\n)。
- 其他转换和替代操作可以使用sed的`s`命令进行,例如替换特定字符串,或根据正则表达式进行替换。
这些示例展示了awk和sed的强大功能,它们在日常文本处理任务中非常实用,尤其适合自动化脚本和数据处理场景。通过熟练掌握这两个工具,你可以高效地处理各种文本数据。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2010-06-19 上传
2009-02-06 上传
2021-01-20 上传
2021-10-02 上传
2014-09-14 上传
2012-01-05 上传
ylshf18
- 粉丝: 0
- 资源: 6
最新资源
- 提高网速的方法——用用就知道
- 硬盘安装Solaris10
- NetJava.cn--б╢Velocity Web╙ж╙├┐к╖в╓╕─╧╓╨╬─░цб╖
- 基于J2EE的Ajax宝典
- DIV+CSS布局大全
- Eclipse中文教程.pdf
- 深入浅出Visual C++串口编程.pdf
- 基于Quartus II + ModelSim SE的后仿真(VHDL版).pdf
- java 上传图片生成缩略图
- Sqlite权威著作《The Definitive Guide to SQLite》
- Dreamweaver 入门
- STL 源码剖析.pdf
- Spring高级教程
- C++标准程序库.pdf
- Ubuntu官方指南.pdf
- OFDM系统中的频率同步技术