awk命令【转】

来源:互联网 发布:网络新媒体概论微盘 编辑:程序博客网 时间:2024/05/18 02:56

来自:http://www.cnblogs.com/chengsheng/p/5658833.html

awk工具,主要将一行分成“字段”来处理。

awk '条件类型1{动作1} 条件类型2{动作2}...‘ filename

awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab]键

last -n 4 | awk '{ print $1 "\t" $3}'

变量$0代表一整行数据的意思

awk是以行尾一次处理的单位,而以字段尾最小的处理单位

变量NF 代表每一行($0)拥有的字段总数

变量NR 代表目前awk所处理的是“第几行”数据

变量FS 代表目前的分割字符,默认是空格键

last -n 4 | awk '{print $1 "\t lines: " NR "\t columes: " NF}'  在awk内的NR,NF等变量要大写,且不需要 $ 啦。

逻辑判断:

cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t" $3}'   查阅第三列小于10的数据,同时列出第一字段和第三字段。但是第一行会显示不如我们所想。

cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t" $3}' 可以让第一行也如我们所要求

cat pay.txt | awk 'NR==1 {printf "%10s %10s %10s %10s %10s\n", $1,$2,$3,$4,"Total"} NR>=2 {total = $2 + $3 + $4 printf "%10s %10d %10d %10d %10.2f\n", $1,$2,$3,$4, total}'   在awk中,变量可以直接使用,不需要加$符号。


原创粉丝点击