我用 LinuxLinux学习之路技术文

linux系列_linux命令系列一 —— awk命令

2016-09-03  本文已影响136人  YONGSSU的技术站点

awk命令

#命令行方式
awk [-F field-separator] 'commands' input-file(s)
#shell脚本,将所有的awk命令插入一个文件,并使awk执行
首行添加#!/bin/awk
#j将所有的awk命令插入一个单独的文件,让后调用
awk -f awk-script-file input-file(s)

内置变量

ARGC               命令行参数个数ARGV               命令行参数排列ENVIRON            支持队列中系统环境变量的使用FILENAME           awk浏览的文件名FNR                浏览文件的记录数FS                 设置输入域分隔符,等价于命令行 -F选项NF                 浏览记录的域的个数NR                 已读的记录数OFS                输出域分隔符ORS                输出记录分隔符RS                 控制记录分隔符

awk工作流程

awk编程

简单实例

# 打印第一列
#cat /etc/passwd |awk -F ':' '{print $1}' 
# 打印第一列和第7列
#cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'
#统计/etc/passwd的账户人数
awk '{count++;print $0;} END{print "user count is ", count}' /etc/passwd
或者
awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd
#统计某个文件夹下的文件占用的字节数
ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'
#以M为单位ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}'

条件语句

ls -l |awk 'BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size=size+$5;}} END{print "[end]size is ", size/1024/1024,"M"}' [end]size is  8.22339 M

循环语句and数组

awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd
上一篇下一篇

猜你喜欢

热点阅读