首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

awk总结

2012-09-08 
awk小结1. BEGIN,后面可不加文件awk BEGIN {date | getline d print d}awk BEGIN {date | getline

awk小结
1. BEGIN,后面可不加文件
awk 'BEGIN {"date" | getline d; print d}'

awk 'BEGIN {"date" | getline d; split(d,mon); print mon[2]}'

awk 'BEGIN {while("ls" | getline d) print d}'

awk 'BEGIN{printf "What is your name? "; getline name <"/dev/tty"} $1~name {print "Found", name, "on line", NR, "."} END {print "See you," name, "."}' test

awk 'BEGIN{while(getline<"/etc/passwd" >0) lc++; print lc}'

2. 数组
awk '{name[x++]=$1}END{for(i-0;i<NR;i++) print i,name[i]}' test

awk '{name[NR]=$1}END{for(i in name) print i, name[i]}' test

awk '{name[$1]++}END{for(i in name) print i}' test

3. 内置函数
sub (regular expression, substitution string)
sub (regular expression, substitution string, target string)

gsub (regular expression, substitution string)
gsub (regular expression, substitution string, target string)

index(string, substring)
awk 'BEGIN{print index("mytest","test")}'  # 3

length(string)
length
awk 'BEGIN{print length("test")}'   # 4
awk '{print length}' test           # length of each row

substr( string, starting position )
substr( string, starting position, length of string )
awk 'BEGIN{print substr("hello world",7,5)}'

match( string, regular expression )
awk 'BEGIN{print match("this is a test",/[a-z]+$/)}'    # 11
awk 'BEGIN{print match("this is a test",/[a-z]+$/),RSTART,RLENGTH}'   # 11 11 4

toupper( string )
tolower( string )

split( string, array, field separator )
split( string, array )

awk 'BEGIN{"date"|getline d;split(d,time);print time[4]}'    # 17:43:52

systime()
awk 'BEGIN{print systime()}'   # seconds since 1970/01/01 00:00:00

strftime( [format specification][,timestamp] )
%a星期几的缩写(Sun)
%A星期几的完整写法(Sunday)
%b月名的缩写(Oct)
%B月名的完整写法(October)
%c本地日期和时间
%d十进制日期
%D日期 08/20/99
%e日期,如果只有一位会补上一个空格
%H用十进制表示24小时格式的小时
%I用十进制表示12小时格式的小时
%j从1月1日起一年中的第几天
%m十进制表示的月份
%M十进制表示的分钟
%p12小时表示法(AM/PM)
%S十进制表示的秒
%U十进制表示的一年中的第几个星期(星期天作为一个星期的开始)
%w十进制表示的星期几(星期天是0)
%W十进制表示的一年中的第几个星期(星期一作为一个星期的开始)
%x重新设置本地日期(08/20/99)
%X重新设置本地时间(12:00:00)
%y两位数字表示的年(99)
%Y当前月份
%Z时区(PDT)
%%百分号(%)

awk 'BEGIN{print strftime("%D", systime())}'
awk 'BEGIN{print strftime("%m/%d/%y",systime())}'

热点排行