亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: awk腳本中使用posix [打印本頁]

作者: unixgiant    時間: 2010-08-05 15:01
標(biāo)題: awk腳本中使用posix
awk命令行中可以使用--posix參數(shù),來讓awk支持\{\},可是在腳本里面怎么使用posix呢?

麻煩各位大俠了
作者: bbgg1983    時間: 2010-08-05 15:08
  1. ./script.sh --posix urfile
復(fù)制代碼

作者: unixgiant    時間: 2010-08-05 15:14
#!/usr/bin/awk -f

BEGIN{
        "date +%m%d" | getline today
        cdn_name="chinacache"
}

/^[0-9]+\.[0-9]+ /{
        time=strftime("%H:%M",$1)
        gsub(/"/,"",$11)
        split($4,code,"/")
        field[code[2]" "$3" "$7" "$11" "time]++
}

END{
        for(i in field){
                split(i,insert," ")
                printf("insert into %s (code,ip,times,cdn_name,file,url,access_time) values ('%s','%s','%s','%s','%s','%s','%s');\n","t_"today,insert[1],insert[2],field[i],cdn_name,insert[3],insert[4],insert[5]);
        }
}
作者: unixgiant    時間: 2010-08-05 15:15
這是我的腳本內(nèi)容,
/^[0-9]+\.[0-9]+ /是一個不精確的匹配,想用\{\}來精確一下
作者: unixgiant    時間: 2010-08-05 15:32
1280762136.672   5378 116.28.219.225 TCP_HIT/206 63856 GET http://my.test.com/abc.exe  - NONE/- application/octet-stream "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" _st%5B_utid_%5D=2461689430

這是日志文件中我需要處理的行
作者: bbgg1983    時間: 2010-08-05 15:42
回復(fù) 5# unixgiant


    要處理成什么樣?
作者: lkk2003rty    時間: 2010-08-05 15:47
為啥非要寫在腳本里  腳本里只寫awk語句 然后執(zhí)行的時候awk --posix -f script file
不就是了
作者: unixgiant    時間: 2010-08-05 16:01
通過腳本處理后是
insert into t_0805 (code,ip,times,cdn_name,file,url,access_time) values ('206','116.28.219.225','1','chinacache','http://my.test.com/abc.exe','-','23:15');
加個管道,直接插到mysql里,
awk --posix -f script file 這種方法我試了一下,有報錯:
文件內(nèi)容:(文件名為t)
# cat t
1280762136.672   5378 116.28.219.225 TCP_HIT/206 63856 GET http://my.test.com/abc.exe  - NONE/- application/octet-stream "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" _st%5B_utid_%5D=2461689430

腳本內(nèi)容:(腳本名為a.awk)
# cat a.awk
{
        print strftime("%H:%M",$1)
}

運行結(jié)果:
# awk --posix -f a.awk t
awk: a.awk:2: (FILENAME=t FNR=1) fatal: function `strftime' not defined

# awk -f a.awk t        
23:15
作者: ly5066113    時間: 2010-08-05 18:44
回復(fù) 8# unixgiant


想要使用 \{ \} ,同時又要保留 GNU awk 的拓展,那么就需要使用

--re-interval
作者: unixgiant    時間: 2010-08-05 19:43
多謝高手。。。




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2