[問題] 取代+新增某行+讀取值放在取代後面

看板Perl作者 (公車奇想男)時間8年前 (2016/09/29 00:02), 編輯推噓2(209)
留言11則, 5人參與, 最新討論串1/1
嗨嗨 各位前輩 這是我之前的關於取代的 code 上面的語法也是 在網路上拼拼而成 我自己也不是很熟悉 唸書唸到一半 又碰到新的問題 這是我之前拿來做取代的程式碼 他會讀取 在某個資料夾底下 .asc副檔名結尾的資料 並且 做取代的動作 然後再將檔案寫回去 https://gist.github.com/anonymous/40f78570806da2e8fd36d61090b4c1e7 想請問一下 如果我現在要做的事情有 跟上次很像 但不是只有單純的取代 總共有四個步驟 我個人都覺得有點麻煩... 如果寫的人在新竹 可以提供麥當勞 或是星巴克兩杯 :) (一行程式碼 我覺得太難閱讀惹XD 希望可以長一點 加個註解跟介紹 ^^) 1. 取代某行 $data =~ s/Have a wonderful day!/Good luck to you/gi; (這個我還可以) 2. 刪除某行 (這個我就不會了 希望是可以刪除某行 Ex: aaa bbb ccc 希望刪除bbb後變成 (希望那行完全刪除 不要換行) aaa ccc 3. 刪除某行 並且在後面新增兩行 Ex: aaa ccc bbb ddd 想要刪除 bbb ddd這行 並且新增 bbb xxx 以及 bbb eee (包含換行符號) 所以會變成 aaa ccc bbb xxx bbb yyy 4. 讀取某行後面的數字 新增兩行新的兩行 取代這一行 但新的兩行 但會用到這行原本的數字 第一行不變 第二行做運算 Ex: aaa 101 12 34 -45 Left 1 bbb 102 56 76 -98 Left 1 想要讀取在aaa 101 後面的那行數字 然後然後新增兩行 並且在第二行做運算 會變成 ccc 105 12 35 -45 Left 1 ccc 106 12 35 -46 Left 1 bbb 102 56 76 -98 Left 1 這邊是先把aaa 101 取代成為 ccc 105 其中的35= 原本aaa後面的 34+1 | -46= -45-1 感謝大神了 希望可以加個註解了 願意以新竹的 星巴克/麥當勞/摩斯 答謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.55.51 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1475078556.A.4A2.html

10/01 15:00, , 1F
這需求蠻特別的,其實不是很清楚這樣子要做什麼
10/01 15:00, 1F

10/01 15:01, , 2F
或許到 code job 發個案,找人幫忙做做看
10/01 15:01, 2F

10/01 15:01, , 3F
而且似乎不限於 Perl,或許有其他的工具也說不定
10/01 15:01, 3F

10/01 20:45, , 4F
這不特別 先把他存起來 不要一行一行處理
10/01 20:45, 4F

10/01 20:45, , 5F
最後再一次把資料處理好送出去就好了
10/01 20:45, 5F

10/02 00:36, , 6F
還是想要用Perl 這樣可以順便學習XD
10/02 00:36, 6F

10/02 00:37, , 7F
看來好像難度有點高QQ 我在想辦法惹
10/02 00:37, 7F

10/04 20:32, , 8F
推 mmonkey 存到變數去parse 出來處理
10/04 20:32, 8F

10/05 01:17, , 9F
你的讀檔會把整個檔案內容當字串,如果不打算一行行處理
10/05 01:17, 9F

10/05 01:19, , 10F
刪除bbb行 或許可用取代 $data=~s/bbb\r?\n//g 方式...
10/05 01:19, 10F

10/16 01:36, , 11F
感謝大家 !
10/16 01:36, 11F
文章代碼(AID): #1Nw-cSIY (Perl)
文章代碼(AID): #1Nw-cSIY (Perl)