Re: [問題] awk 一特殊用法

看板Linux作者 (Losepacific)時間13年前 (2013/02/22 04:09), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《Sizemore24 (Going deep center)》之銘言: : 請教各位,現有一檔案,如下格式: : 111/222 : aaa : bbb : ccc : ccc : ccc : 111/333 : aaa : bbb : ccc : ccc : 111/444 : aaa : bbb : 111/555 : aaa : bbb : ccc : 現在想用 awk,達成一效果: : 「數字/數字」 當要取得的區塊的頭,「數字/數字前最後一個 ccc」 為區塊的尾, : 此為一完整區塊,印出來。 : 若只有「數字/數字」,卻沒有 ccc 行,就視為不完成區塊,不印。 : 所以印出來會是 : 111/222 : aaa : bbb : ccc : ccc : ccc : 111/333 : aaa : bbb : ccc : ccc : 111/555 : aaa : bbb : ccc : 剛試了好多方法,但判斷何處為區塊內最後一個 ccc?一直有問題, : 所以想請問大家,有沒有什麼可行的解法?感謝。 : p.s. 願贈送 10000 批幣當感謝最佳解的小心意,雖然很微薄。 試著土法練鋼: { test[NR] = $0 if(NR == 1){flag=1} if ((NR !=1) && ($0 ~ /[0-9][0-9]*\/[0-9][0-9]*/)){ x=NR-1 if(test[x] ~ /ccc/){ for(i=flag;i<NR;i=i+1) print test[i] } flag=NR } } END{ x=NR if(test[x] ~ /ccc/){ for(i=flag;i<=NR;i=i+1) print test[i] } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.171.230

02/23 00:30, , 1F
可以用了,感謝,小心意奉上。
02/23 00:30, 1F
文章代碼(AID): #1H9dyH3f (Linux)
文章代碼(AID): #1H9dyH3f (Linux)