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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5054 | 回復(fù): 10
打印 上一主題 下一主題

【請(qǐng)教】cygwin下的awk統(tǒng)計(jì)問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-09-23 21:01 |只看該作者 |倒序?yàn)g覽
20可用積分
本帖最后由 keke00 于 2010-09-23 22:21 編輯

環(huán)境:
  1. $ bash --version
  2. GNU bash, version 3.1.17(6)-release (i686-pc-cygwin)
  3. Copyright (C) 2005 Free Software Foundation, Inc
復(fù)制代碼
背景:
一文件夾有數(shù)千個(gè)文件,文件名如下:
0_20100908090020.dat
0_20100909200001.dat
0_20100923180900.dat
........
每個(gè)文件650K左右,近8000行
現(xiàn)在想統(tǒng)計(jì)每個(gè)文件中符合特定字符串的信息

問(wèn)題:
當(dāng)輸入文件數(shù)量接近800,大小接近480MB時(shí),
awk end部分打印兩次,如下:

Total:797
F:15
Total:254
F:5

按理只打印一次呀!
個(gè)人懷疑是和cygwin的最大存儲(chǔ)容量有關(guān)
于是修改注冊(cè)表修改注冊(cè)表的HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER區(qū)段。添加DWORD鍵
heap_chunk_in_mb
同時(shí)用cygwin中的regtool完成該設(shè)置。如下:

regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 10240

regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin

但問(wèn)題依舊,請(qǐng)教高手哪里還有問(wèn)題?


部分代碼如下:確定在此時(shí)已出問(wèn)題
  1. ls*.dat | awk -F'[_.]' '$2+0>=201009080000 && $2+0 <=201009250000' | xargs awk '/$2~/EOF/{F++;nextfile}END{printf"\nTotal:%d\n",ARGC-1;printf"EOF:%d\n",F}'
復(fù)制代碼
代碼較少,解釋下我本意
ls*.dat | awk -F[_.]  '$2+0>=201009080000 && $2+0 <=201009250000' 找出符合條件的文件,之后在這些文件中查找信息包含EOF的文件數(shù)量

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-09-23 21:32 |只看該作者
ls*.dat | awk -F[_.]  '$2+0>=201009080000 && $2+0 <=201009250000' | xargs awk 'END{printf"\nTotal:%d\n",ARGC-1}'

首先 1)-F[_.] 為啥不用單引號(hào)引起來(lái)
2) xargs 你確認(rèn)要這么用?
3) 確認(rèn)了2 之后你還要用 ARGC的話 為啥不用wc

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-09-23 21:35 |只看該作者
....-F[_.]是什么意思 ........我看這有點(diǎn)崩潰

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-09-23 21:37 |只看該作者

  1. ls*.dat | awk -F'_'  '{if($2>=201009080000 && $2<=201009250000)a++}END{print a}'
復(fù)制代碼
這個(gè)就ok了吧減少io

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-09-23 22:23 |只看該作者
回復(fù) 2# nuclearxin


    1)-F[_.] 為啥不用單引號(hào)引起來(lái),加單引號(hào)最好
已編輯

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-09-25 15:01 |只看該作者
樓主的意思不是很明白
我的理解是在某個(gè)目錄下,有很多.dat文件,這些文件中有的包含字符串"eof",你想根據(jù)這些dat文件的第二列過(guò)濾出一個(gè)文件列表,在這個(gè)列表中統(tǒng)計(jì)包含eof的dat文件的數(shù)量。
ls *.dat  | awk -F'[_.]'  '$2+0>=201009080000 && $2+0 <=201009250000' >tmpfile
more a.sh
#!/bin/bash
f=0
for file in `cat /tmp/alen/tee/tmpfile`
  do
     grep -i "eof" $file &>/dev/null
     [ $? = 0 ] && f=$((f+1))
  done
echo $f

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-09-25 15:13 |只看該作者
回復(fù) 1# keke00

try:
    xargs -0


xargs -零

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2011-01-12 23:41 |只看該作者
主要問(wèn)題可能是ls *.dat及xargs兩個(gè)命令命令行緩沖有限制,文件數(shù)量較大時(shí)不能在命令行用通配符,也不要用xargs.
下面代碼調(diào)試通過(guò),應(yīng)該符合樓主要求:

  1. ls | awk -F'[_.]' '
  2. BEGIN{countf=eoff=0;}
  3. $2+0>=201009080000 && $2+0 <=201009250000 && $3=="dat" && NF==3{
  4. countf++;FS="[ \t]+";fname=$0;
  5. while (1==getline<fname){
  6.   if($2~"EOF"){
  7.    eoff++;break;
  8.   }
  9. };
  10. close(fname);
  11. FS="[_.]";
  12. }
  13. END{
  14.   print "\nTotal:,",countf,"EOF:",eoff;
  15. }'
復(fù)制代碼


下面帶調(diào)試語(yǔ)句的(去掉#)腳本,并先生成調(diào)試數(shù)據(jù)后測(cè)試:
  1. echo "1

  2. 2 EOF">0_200009080900.dat
  3. echo "2" >1_200009080900.dat
  4. echo "1
  5. 2
  6. 3
  7. 3 EOF">2_201009080010.dat
  8. echo "4" >3_201009080030.dat
  9. echo "4" >4_201009080020.dat
  10. echo "4" >5_201109080020.dat
  11. ls | awk -F'[_.]' '
  12. BEGIN{countf=eoff=0;}
  13. #{print "#0",NR,$0}
  14. $2+0>=201009080000 && $2+0 <=201009250000 && $3=="dat" && NF==3{
  15. countf++;
  16. FS="[ \t]+";
  17. fname=$0;
  18. # print "#1",$0,countf,eoff,fname;
  19. while (1==getline<fname){
  20. # print "#2",$0,countf,eoff,fname;
  21. if($2~"EOF"){
  22. eoff++;
  23. # print "#3",$0,countf,eoff,fname;
  24. break;
  25. }
  26. };
  27. close(fname);
  28. FS="[_.]";
  29. }
  30. END{
  31. print "\nTotal:,",countf,"EOF:",eoff;
  32. }'
復(fù)制代碼

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
9 [報(bào)告]
發(fā)表于 2011-01-13 00:17 |只看該作者
接在xargs后面,被分兩次執(zhí)行,這個(gè)太正常不過(guò)了。
參數(shù)再長(zhǎng),也有個(gè)容限。xargs會(huì)幫你分的
$ seq 1 10000|xargs echo | wc -l
1
$ seq 1 100000|xargs echo | wc -l
5

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
10 [報(bào)告]
發(fā)表于 2011-01-13 00:20 |只看該作者
可以這樣,在后面再加一個(gè)管道,再接一個(gè)awk來(lái)最終統(tǒng)計(jì)一下
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP