首页 > linux > awk 使用shell参数变量

awk 使用shell参数变量

2013年10月31日 发表评论 阅读评论

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}'

待完善... ,如果你有什么好命令也可以留言给我

分类: linux 标签: , , ,
  1. 啊啊啊
    2014年3月7日15:59 | #1

    啊啊啊

  1. 本文目前尚无任何 trackbacks 和 pingbacks.