Shell学习日志:命令与awk应用实战

2星 需积分: 12 15 下载量 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语法来实现复杂的数据处理任务。