看板 Perl 關於我們 聯絡資訊
這樣就沒辦法那麼少行啦... my @a = split /\*/; my $id = shift @a; $a[0] =~ s/(\d+)/A$1/g; $a[1] =~ s/(\d+)/B$1/g; @a = grep {/\S/} map {split /,/} @a; @a ? map {print "$id $_\n"} sort {substr($a,1)<=>substr($b,1)} @a : print "$id\n"; 看有沒有人有興趣弄出更少行的 XD ※ 引述《yalent ( 心只有妳 )》之銘言: : 非常感謝您的回答~ : 目前又遇到一個問題,在原始檔的*之中, : 都會有一組數字如下的1,2,3等 : ID2*1,2,4*2,3,4* : ID3**2* : ID4*** : 但是我想將第一組數字1轉成 A1,2轉成 A2,4轉成 A4 : 至於第二組數字的2 轉成B2,3轉成 B3,4轉成 B4 : 之後再對內容作排序 : 想將內容轉為 : ID2 A1 : ID2 A2 : ID2 B2 : ID2 B3 : ID2 A4 : ID2 B4 : ID3 B2 : ID4 : 那這部份取代的寫法,我要怎麼寫呢? : ※ 引述《AntaresStar ()》之銘言: : : 雖然好像是以*為分隔 但切開後又要排序 : : 那不如連逗點也一起拿來切了 : : 這樣如何 : : #!/usr/bin/perl : : while (<DATA>) { : : my @a = grep {/\S/} split /[,*]/; : : my $b = shift @a; : : @a ? map {print "$b $_\n"} sort @a : print "$b\n"; : : } : : __DATA__ : : ID2*1,2,4*2,3,4* : : ID3**2* : : ID4*** -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.171.55 ※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1397405938.A.F00.html
yalent:感謝,我再試試看~ 04/14 09:20
cutekid:一開始先 chomp 的話,好像可以省略 grep {/\S/} 04/14 10:51
cutekid:可再省 5 個字元 XD 04/14 10:52