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

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

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3810 | 回復(fù): 3
打印 上一主題 下一主題

字段匹配處理問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-03-17 10:39 |只看該作者 |倒序?yàn)g覽
各位大蝦,請(qǐng)教個(gè)問題
我現(xiàn)在要用perl處理一批文件a.txt  b.txt……
文件的內(nèi)容大致如下
192.168.11.11|ct@mycdma.cn|www.baidu.com|21

……
解釋下字段的內(nèi)容:
第一個(gè)字段為IP,第二個(gè)字段user@realm,第三個(gè)字段string(非空),第四個(gè)字段為固定值(21、31、41)

假如第一個(gè)字段不匹配,把整行輸出到另外一個(gè)文件,命名a,并且在該行后面注明“$1”
第二個(gè)字段不匹配,同樣輸出整行,注明“$2”
同一行多個(gè)字段不匹配,只輸出一行,后面?zhèn)渥⒉黄ヅ涞淖侄?br />
例如a.txt
192.168.11.11|ct@mycdma.cn|www.baidu.com|21
192.168.11.|ct@mycdma.cn||21
輸出a
192.168.11.|ct@mycdma.cn||21 $1$3

論壇徽章:
3
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
2 [報(bào)告]
發(fā)表于 2014-03-17 16:34 |只看該作者
本帖最后由 mcshell 于 2014-03-17 16:39 編輯
  1. use strict;
  2. use warnings;
  3. while (<DATA>) {
  4.     chomp;
  5.     my $h;
  6. /^(?:((?:\d{1,3}\.){3}\d{1,3})|[^|]*)\|(?:([\w.]+\@[\w.]+)|[^|]*)\|(?:(\S+)|[^|]*)\|(?:(\d+)|[^|]*)/;
  7.     push @{ $h->{$_} }, '$1' unless $1;
  8.     push @{ $h->{$_} }, '$2' unless $2;
  9.     push @{ $h->{$_} }, '$3' unless $3;
  10.     push @{ $h->{$_} }, '$4' unless $4;
  11.     print "$_ ",join "",@{$h->{$_}},"\n" for keys %$h;
  12. }
  13. __DATA__
  14. 192.168.11.11|ct@mycdma.cn|www.baidu.com|21
  15. 192.168.11.|ct@mycdma.cn|dddd|21
  16. 192.168.11.|ct@||22
  17. 192.168.11.12|ct@||22


復(fù)制代碼
output
192.168.11.|ct@mycdma.cn|dddd|21 $1
192.168.11.|ct@||22 $1$2$3
192.168.11.12|ct@||22 $2$3

論壇徽章:
1
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
3 [報(bào)告]
發(fā)表于 2014-03-21 15:26 |只看該作者
回復(fù) 2# mcshell


    你的那個(gè)圖真有立體感。。。。

論壇徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午馬
日期:2014-08-06 03:56:58
4 [報(bào)告]
發(fā)表于 2014-03-21 18:03 |只看該作者
{:2_172:}湊個(gè)熱鬧
  1. #!/usr/bin/perl

  2. my @p = (
  3.     qr/^(?:\d{1,3}\.){3}\d{1,3}/,
  4.     qr/^\w[\w\.]+\@\w+\.[a-z]+/,
  5.     qr/^(?:[a-z]+\.)?\w+\.[a-z]+/,
  6.     qr/^[234]1/
  7. );

  8. while (<DATA>) {
  9.     chomp;
  10.     my @a = split /\|/, $_;
  11.     my @error = map { $a[$_] =~ $p[$_] ? () : $_ + 1 } 0 .. 3;
  12.     next unless @error;
  13.     $_ .= '  . join( ', @error );
  14.     print "$_\n";
  15. }

  16. __DATA__
  17. 192.168.11.11|ct@mycdma.cn|www.baidu.com|21
  18. 192.168.11.|ct@mycdma.cn|dddd|21
  19. 192.168.11.|ct@||22
  20. 192.168.11.12|ct@||22
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊(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ū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP