这里会显示出您选择的修订版和当前版本之间的差别。
— |
linux三剑客:awk [2022/07/13 21:29] (当前版本) pwbty 创建 |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== awk介绍 ====== | ||
+ | |||
+ | awk 擅长对列进行操作/ | ||
+ | |||
+ | 作用特点: | ||
+ | |||
+ | - 排除信息 | ||
+ | - 查询信息 | ||
+ | - 统计信息 | ||
+ | - 替换信息 | ||
+ | |||
+ | 语法格式: | ||
+ | |||
+ | awk [参数] ‘模式-动作’ 文件 | ||
+ | |||
+ | ====== 查询方法 ====== | ||
+ | |||
+ | 命令: | ||
+ | |||
+ | ^-F^定义分隔符^ | ||
+ | |-v|设置变量 | | ||
+ | |NF|最后一列 | | ||
+ | |||
+ | $符号用法: | ||
+ | |||
+ | ^符号 | ||
+ | |$1 $2 $3|取对应列 | ||
+ | |$NF | ||
+ | |$(NF-n) |取倒数第几列 | | ||
+ | |$0 |取所有列的信息| | ||
+ | |||
+ | ===== 按单多行查询 ===== | ||
+ | |||
+ | 单行NR==,多行区间用”, | ||
+ | |||
+ | <code shell> | ||
+ | # | ||
+ | awk ' | ||
+ | # | ||
+ | awk ' | ||
+ | # | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | ===== 字符查询 ===== | ||
+ | |||
+ | 多行查询同行查询,“, | ||
+ | |||
+ | < | ||
+ | awk '/ | ||
+ | </ | ||
+ | |||
+ | ===== 字符筛选 ===== | ||
+ | |||
+ | 筛选结果之间的连接符号 | ||
+ | |||
+ | < | ||
+ | awk '/ | ||
+ | Zhang 390320151 | ||
+ | awk '/ | ||
+ | Zhang, | ||
+ | </ | ||
+ | |||
+ | 指定分隔符”-F” | ||
+ | |||
+ | < | ||
+ | awk -F ":" | ||
+ | </ | ||
+ | |||
+ | 如果行中同时存在多个不同分隔符-F” :” | ||
+ | |||
+ | < | ||
+ | # | ||
+ | awk -F "[ :]+" '/ | ||
+ | # | ||
+ | awk -F "[ :]+" '/ | ||
+ | </ | ||
+ | |||
+ | 在某列中筛选,输出其他列信息 | ||
+ | |||
+ | < | ||
+ | # | ||
+ | # | ||
+ | awk ' | ||
+ | # | ||
+ | awk ' | ||
+ | awk ' | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | ====== 替换方法 ====== | ||
+ | |||
+ | gsub(/ | ||
+ | |||
+ | 在print之前,先替换,再输出 | ||
+ | |||
+ | <code shell> | ||
+ | # | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | ====== awk高级功能说明 ====== | ||
+ | |||
+ | ===== awk模式概念 ===== | ||
+ | |||
+ | 匹配的条件信息 | ||
+ | |||
+ | ==== 普通的模式: | ||
+ | |||
+ | * 正则表达式作为模式 | ||
+ | |||
+ | < | ||
+ | awk '/ | ||
+ | </ | ||
+ | |||
+ | * 利用比较匹配信息 | ||
+ | |||
+ | < | ||
+ | NR==2 | ||
+ | NR>=2 | ||
+ | NR<=2 | ||
+ | </ | ||
+ | |||
+ | ==== 特殊的模式 ==== | ||
+ | |||
+ | === BEGIN{}在awk执行命令前做什么 === | ||
+ | |||
+ | * 增加标题 | ||
+ | |||
+ | < | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | * 修改内置分隔符变量 | ||
+ | |||
+ | < | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | === END{}在命令结束后进行的操作 === | ||
+ | |||
+ | 最后显示信息 | ||
+ | |||
+ | < | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | 统计空行 | ||
+ | |||
+ | < | ||
+ | awk '/ | ||
+ | </ | ||
+ | |||
+ | 统计系统中多少普通用户,虚拟用户 | ||
+ | |||
+ | < | ||
+ | # | ||
+ | awk ' | ||
+ | # | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | 求和运算 | ||
+ | |||
+ | < | ||
+ | seq 10 |awk ' | ||
+ | </ | ||
+ | |||
+ | ===== 内置变量 ===== | ||
+ | |||
+ | ^变量名^英文 | ||
+ | |FS |field separator |字段分隔符变量 | ||
+ | |NR |number records | ||
+ | |NF |number of fields|表示每一行有多少列| | ||