awk 使用shell参数变量
awk是一行一行处理文本,当需要判断当前处理行是否满足特定条件时,需要从shell中输入参数,然后放到awk的脚本命令中配合处理。
比如awk读取shell的位置参数$1 ,如果直接放在awk命令中会与每行的第一个字段$1冲突,需要特殊处理。
例如有文件 iet.txt如下格式,需求是提取第一个字段或第二个字段为AA的行
AA BB CC DD EE FF
CC DD EE FF GG DD
...
脚本如下,保存为tiqu.sh
#!/bin/bash
sed '/^$/d' iet.txt|awk '{if(NF>3&&($1=="'$1'"||$2=="'$1'")){print $1","$2","$6 }}'
执行方法:
bash tiqu.sh AA
输出结果:
AA BB FF
说明:
sed '/^$/d' iet.txt 去掉文本中的空行,然后awk判断如果当前行字段大于三个且满足条件就输出第1,2,6列字段的值,用单引号隔离shell的变量,并且用双引号包围在shell变量的两边。
awk教程
普通的awk 命令格式
awk -F分隔符 'BEGIN { 初始化 } { 循环执行部分 } END { 结束处理 }' file
分隔符,BEGIN,END部分可以省略,默认分隔符是空格
简化的awk格式
awk '{循环执行命令}' file
常用awk命令:
awk列求和
awk 'BEGIN{total=0}{total+=$1}END{print total}'
待完善... ,如果你有什么好命令也可以留言给我
啊啊啊