Shell学习日志:命令与awk应用实战
2星 需积分: 12 91 浏览量
更新于2024-09-22
收藏 17KB TXT 举报
本文是一篇关于Shell编程的学习日志总结,详细记录了在shell脚本中进行数据处理和筛选的一些关键知识点。主要内容包括:
1. **管道与循环结合**:通过`catfile | while read p1 p2 p3 ... ; do ... done`的结构,实现了逐行读取文件内容,并利用`IFS`(Internal Field Separator)对每一行按特定字符(这里是百分号`%`)进行分割,如`echo "aaaa%bbbb%cccc" | IFS='%'; read p1 p2 p3`。
2. **awk的基本应用**:
- **条件判断**:使用`awk`进行条件式过滤,例如查找特定字段,如`awk '{if($4~/Brown/) print $0}' grade.dat`,搜索包含"Brown"的第四列。
- **逻辑运算**:`awk`允许复杂的逻辑操作,如匹配多个条件,如`awk '{if($1~/Brown/ || $1~/Yellow/) print $0}' grade.dat`,筛选出含有"Brown"或"Yellow"的第一列。
- **行号和字段计数**:
- `NR`(Record Number):用于统计处理过的行数,如`awk '{print $0} END {print NR}' grade.dat`。
- `NF`(Number of Fields):统计每行字段数量,`awk '{print NF " " NR " " $0} END {print FILENAME "hascounts:" NF}' grade.dat`。
- **字段替换与计算**:在`awk`中,可以根据条件修改字段值,如将`$4`中的"Brown"替换为"newBrown",并更新其他字段。
- **新字段添加**:通过`OFS`(Output Field Separator)设置,可以在原有输出中添加新的计算结果,如`awk '{total += $6; ...}'`。
3. **awk的不同模式**:
- **BEGIN块**:在开始处理之前执行的代码,如初始化变量`scolor`。
- **条件分支处理**:使用条件语句根据变量值进行特定操作,如检查学生姓名对应的腰带颜色。
通过这篇日志,我们可以看到Shell编程在数据处理和文本操作中的灵活运用,以及awk的强大功能,这对于理解和实践Shell编程非常有帮助。学习者可以通过这些实例深入了解如何结合循环、条件判断和awk语法来实现复杂的数据处理任务。
2009-10-13 上传
2014-11-12 上传
2015-03-27 上传
2019-05-28 上传
2021-01-09 上传
2013-07-03 上传
2021-01-10 上传
2020-09-15 上传
2012-02-21 上传
yf527853
- 粉丝: 12
- 资源: 8
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析