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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: yj11
打印 上一主題 下一主題

怎么把相同行數(shù)合并到一行,然后原行數(shù)后面的數(shù)字相加 [復制鏈接]

論壇徽章:
0
11 [報告]
發(fā)表于 2010-01-08 10:10 |只看該作者
原帖由 linuxty 于 2010-1-8 10:01 發(fā)表
perl -anle '$cnt{$F[0]}+=$F[1];END{print "$_\t$cnt{$_}" for keys %cnt}' urfile

以第一行為例吧
$F[0] 就是 aaa@domain.com , $F[1] 就是2
$cnt{$F[0]} +=$F[1] 就是一個哈希數(shù)組, 以$F[0]為key,$F[1 ...


這是命令行的寫法,如果寫成程序是如何寫?我不是很明白每行的第一列是如何賦值給$F[0],第二列是如何賦值給$f[1]的,這個在程序里面是如何寫的。

論壇徽章:
0
12 [報告]
發(fā)表于 2010-01-08 10:21 |只看該作者
謝謝各位幫助。雖然還有不明白的地方,我自己再找找文檔查一下。

論壇徽章:
1
獅子座
日期:2013-12-16 16:09:24
13 [報告]
發(fā)表于 2010-01-08 11:17 |只看該作者
原帖由 mwm5 于 2010-1-8 09:16 發(fā)表
perl -anle '$cnt{$F[0]}+=$F[1];END{print "$_\t$cnt{$_}" for keys %cnt}' urfile


END太好用了!!!

論壇徽章:
0
14 [報告]
發(fā)表于 2010-01-08 14:50 |只看該作者
原帖由 yj11 于 2010-1-8 10:10 發(fā)表


這是命令行的寫法,如果寫成程序是如何寫?我不是很明白每行的第一列是如何賦值給$F[0],第二列是如何賦值給$f[1]的,這個在程序里面是如何寫的。



我想這個應該跟-a有關(guān)系,默認把split后的值放入數(shù)組@F里

論壇徽章:
0
15 [報告]
發(fā)表于 2010-01-08 14:54 |只看該作者
perl的命令行方式和awk是非常相似的:
  1. awk        '{ cnt[$1] += $2 } END { for (x in cnt) print x, cnt[x] }' file
  2. perl -anle '$cnt{$F[0]}+=$F[1]; END{for $x (keys %cnt) { print "$x\t$cnt{$x}" } }' file
復制代碼


最大的不同是,perl的域從0開始,而awk從1開始,而$0代表整行內(nèi)容

論壇徽章:
0
16 [報告]
發(fā)表于 2010-01-08 15:19 |只看該作者

回復 #1 yj11 的帖子

第二部分:命令行Perl參數(shù):可以讓短小的Perl程序運行在命令行.

1:-e
可以讓Perl程序在命令行上運行.
例如, 我們可以在命令行上運行 "Hello World" 程序而不用把它寫入文件再運行.
$ perl -e 'print "Hello World\n"'

多個 -e 也可以同時使用, 運行順序根據(jù)它出現(xiàn)的位置.
$ perl -e 'print "Hello ";' -e 'print "World\n"'
象所有的 Perl 程序一樣, 只有程序的最后一行不需要以 ; 結(jié)尾.

2:-M
可以象通常一樣引用模
$ perl -MLWP::Simple -e 'getstore ("http://www.163.com/","163.html"'##下載整個網(wǎng)頁
-M+模塊名 和 use模塊名一樣

3:-n
增加了循環(huán)的功能, 使你可以一行一行來處理文件
$  perl -n -e'print;' 1.txt #####$  perl -ne 'print;' 1.txt
這與下面的程序一樣.
LINE:
    while (<> {

     print;
    }

<>; 打開命令行里的文件,一行行的讀取.每一行缺省保存在 $_
$ perl -n -e 'print "$. - $_"' file

上面的這一行可以寫成
  LINE:

    while (<> {

      print "$. - $_"

    }
輸出當前行數(shù) $. 和當前行 $_.

4:-p ,和 -n 一樣,但是還會打印 $_ 的內(nèi)容




如果想在循環(huán)的前后做些處理, 可以使用 BEGIN 或 END block. 下面的這一行計算文件里的字數(shù).

$ perl -ne 'END { print $t } @w = /(\w+)/g; $t += @w' file.txt

每一行所有匹配的字放入數(shù)組 @w , 然后把 @w 的元素數(shù)目遞加到  $t. END block 里的 print 最后輸出文件總字數(shù).
還有兩個參數(shù)可以讓這個程序變得更簡單.

5:-a
打開自動分離 (split)模式. 空格是缺省的分離號. 輸入根據(jù)分離號被分離然后放入缺省數(shù)組@F

使用-a,上面的命令可以寫成這樣:
$ perl -ane 'END {print $x} $x += @F' file.txt  ##使用了-a



6:-F
把缺省的分離號改為你想要的.例如把分離號定為非字符,上面的命令可以改為:
$ perl -F'\W' -ane 'END {print $x} $x += @F' file.txt



7:-l 參數(shù), 用來給每一個輸出加 \n. 例如
$ perl -le 'print "Hello World"'

論壇徽章:
0
17 [報告]
發(fā)表于 2010-01-08 16:00 |只看該作者
perl -lane '$a{$F[0]}+=$F[1];END{print $_," ",$a{$_} for keys %a}' file

論壇徽章:
0
18 [報告]
發(fā)表于 2010-01-08 17:44 |只看該作者
不擅長命令···因為不再linux下用perl···
不過用hash很容易解決這個問題··

[ 本帖最后由 wfnh 于 2010-1-8 17:45 編輯 ]

論壇徽章:
0
19 [報告]
發(fā)表于 2010-01-08 18:02 |只看該作者

回復 #18 wfnh 的帖子

感覺perl的命令行很好用,而且其實也很簡單~
和awk還有sed有很多相通的地方,而且完全可以取代那2個
另外就是我初學perl,感覺有的時候遇到疑問了,用perl命令行測試結(jié)果很方便的~

論壇徽章:
0
20 [報告]
發(fā)表于 2010-01-08 20:50 |只看該作者
原帖由 mwm5 于 2010-1-8 18:02 發(fā)表
感覺perl的命令行很好用,而且其實也很簡單~
和awk還有sed有很多相通的地方,而且完全可以取代那2個
另外就是我初學perl,感覺有的時候遇到疑問了,用perl命令行測試結(jié)果很方便的~


因為是環(huán)境的問題吧···linux下·命令行很容易··win下··覺得怪怪的···所以··
我一直都是寫腳本···哪怕是一行代碼···呵呵··
不過··也用過命令行····確實是很方便··
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP