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

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

Chinaunix

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

條件匹配后進(jìn)行替換篩選 [復(fù)制鏈接]

論壇徽章:
2
2015年亞洲杯之沙特阿拉伯
日期:2015-03-27 17:28:472015年亞洲杯之韓國
日期:2015-03-27 22:34:22
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2016-08-18 23:20 |只看該作者 |倒序?yàn)g覽
本帖最后由 tingshuibanxia 于 2016-09-05 19:43 編輯

假如文本A,以tab分隔:

2c    sss    e3rh48
d1   nnn    wure2
11    WW    34ER3
....

如果第二列內(nèi)容匹配 sss 則以aa代替并輸出此行內(nèi)容
如果第二列內(nèi)容匹配 nnn 則以bb代替并輸出此行內(nèi)容
第二列沒有匹配到的行去掉,
得到:

2c    aa    e3rh48
11    bb    34ER3
....


用數(shù)組實(shí)現(xiàn)。大神幫忙看看代碼有問題嗎?哪里可以優(yōu)化呢?

  1. #!/usr/bin/perl -w
  2. use strict;

  3. open (IN, "<", "A.txt") or die $!;
  4. open (OUT,">", "B.txt") or die $!;

  5. my @A;
  6. my @B;

  7. while (<IN>{
  8.     chomp;
  9.     @A = split("\t", $_);
  10.     @B = @A;
  11.     my $m = $A[1];
  12.     if ($m eq "sss"){
  13.         $m = "aa";
  14.         $B[1] = $m;
  15.     }elsif($m eq "nnn"){
  16.         $m = "bb"
  17.         $B[1] = $m;
  18.     }
  19.     print OUT @B;
  20. }
  21. close IN;
  22. close OUT;
復(fù)制代碼

論壇徽章:
307
程序設(shè)計版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
2 [報告]
發(fā)表于 2016-08-19 10:35 |只看該作者
  1. #!/usr/bin/perl -w
  2. use strict;

  3. while (<DATA>){
  4.     chomp;
  5.     my @A = split ("\t", $_);
  6.     my @B = @A;
  7.     my $m = $A[1];
  8.     if ($m eq 'f^ce,i'){
  9.         $B[1] = 'aa';
  10.     }
  11.     if ($m eq 'E,WE'){
  12.         $B[1] = 'bb';
  13.     }

  14.     if ($m ne $B[1]){
  15.         print "@B\n";
  16.     }
  17. }

  18. __DATA__
  19. 2c  f^ce,i  e3rh48
  20. d1  a,b11   wure2
  21. 11  E,WE    34ER3
復(fù)制代碼
perl abc.pl
--------------------------------
2c aa e3rh48
11 bb 34ER3

論壇徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17處女座
日期:2014-09-01 09:25:1115-16賽季CBA聯(lián)賽之吉林
日期:2015-12-22 14:01:5215-16賽季CBA聯(lián)賽之廣東
日期:2016-03-08 18:49:422016科比退役紀(jì)念章
日期:2016-07-06 12:19:55
3 [報告]
發(fā)表于 2016-08-19 10:56 |只看該作者
本帖最后由 stanley_tam 于 2016-08-19 10:58 編輯

  1. #!/usr/bin/perl -w
  2. use strict;

  3. open (IN, "<", "A.txt") or die $!;
  4. open (OUT,">", "B.txt") or die $!;

  5. # my @A;
  6. # my @B;

  7. my %hash = (
  8.     'f^ce,i' => 'aa',
  9.     'E,WE'   => 'bb',
  10. );

  11. while (<IN>) {
  12.     chomp;
  13.     my @A = split("\t", $_);
  14.     if (exists $hash{$A[1]}) {
  15.         $A[1] = $hash{$A[1]};
  16.         print OUT "@A$/";
  17.     }
  18.     # @B = @A;
  19.     # my $m = $A[1];
  20.     # if ($m eq "f^ce,i"){
  21.         # $m = "aa";
  22.         # $B[1] = $m;
  23.     # }elsif($m eq "E,WE"){
  24.     #     $m = "bb"
  25.     #     $B[1] = $m;
  26.     # }
  27.     # print OUT @B;
  28. }
  29. close IN;
  30. close OUT;
復(fù)制代碼

論壇徽章:
2
2015年亞洲杯之沙特阿拉伯
日期:2015-03-27 17:28:472015年亞洲杯之韓國
日期:2015-03-27 22:34:22
4 [報告]
發(fā)表于 2016-08-19 21:23 |只看該作者
謝謝你們!小菜鳥在努力中~

論壇徽章:
2
2015年亞洲杯之沙特阿拉伯
日期:2015-03-27 17:28:472015年亞洲杯之韓國
日期:2015-03-27 22:34:22
5 [報告]
發(fā)表于 2016-08-20 17:19 |只看該作者
回復(fù) 3# stanley_tam


    再請教一下,我想輸出文件列之間仍然以tab分隔:print OUT join("\t","@A$/"); 可是輸出是空格分隔,為什么呢?

論壇徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17處女座
日期:2014-09-01 09:25:1115-16賽季CBA聯(lián)賽之吉林
日期:2015-12-22 14:01:5215-16賽季CBA聯(lián)賽之廣東
日期:2016-03-08 18:49:422016科比退役紀(jì)念章
日期:2016-07-06 12:19:55
6 [報告]
發(fā)表于 2016-08-20 23:34 |只看該作者
本帖最后由 stanley_tam 于 2016-08-20 23:35 編輯

寫成這樣試試?

  1. my $line = join "\t", @A;
  2. print OUT "$line$/";
復(fù)制代碼
回復(fù) 5# tingshuibanxia


   

評分

參與人數(shù) 1信譽(yù)積分 +20 收起 理由
tingshuibanxia + 20 贊一個!

查看全部評分

論壇徽章:
2
2015年亞洲杯之沙特阿拉伯
日期:2015-03-27 17:28:472015年亞洲杯之韓國
日期:2015-03-27 22:34:22
7 [報告]
發(fā)表于 2016-08-20 23:50 |只看該作者
回復(fù) 6# stanley_tam


    這樣寫可以!好神奇!

論壇徽章:
6
15-16賽季CBA聯(lián)賽之新疆
日期:2016-03-22 22:34:5915-16賽季CBA聯(lián)賽之山東
日期:2016-04-11 09:08:41程序設(shè)計版塊每日發(fā)帖之星
日期:2016-06-28 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2016-07-19 06:20:00每日論壇發(fā)貼之星
日期:2016-07-19 06:20:0015-16賽季CBA聯(lián)賽之青島
日期:2016-07-20 22:44:17
8 [報告]
發(fā)表于 2016-08-25 03:01 |只看該作者
$>  cat aa|perl -ne 'print if (s/f\^ce,i/aa/ + s/E,WE/bb/)'
2c    aa    e3rh48
11    bb    34ER3
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(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