作者tony9211 (公車奇想男)
看板Perl
標題[問題] 取代+新增某行+讀取值放在取代後面
時間Thu Sep 29 00:02:32 2016
嗨嗨 各位前輩
這是我之前的關於取代的 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
→ Neisseria: 這需求蠻特別的,其實不是很清楚這樣子要做什麼 10/01 15:00
→ Neisseria: 或許到 code job 發個案,找人幫忙做做看 10/01 15:01
→ Neisseria: 而且似乎不限於 Perl,或許有其他的工具也說不定 10/01 15:01
推 mmonkeyboyy: 這不特別 先把他存起來 不要一行一行處理 10/01 20:45
→ mmonkeyboyy: 最後再一次把資料處理好送出去就好了 10/01 20:45
→ tony9211: 還是想要用Perl 這樣可以順便學習XD 10/02 00:36
→ tony9211: 看來好像難度有點高QQ 我在想辦法惹 10/02 00:37
推 icbruce: 推 mmonkey 存到變數去parse 出來處理 10/04 20:32
→ MistQ: 你的讀檔會把整個檔案內容當字串,如果不打算一行行處理 10/05 01:17
→ MistQ: 刪除bbb行 或許可用取代 $data=~s/bbb\r?\n//g 方式... 10/05 01:19
→ tony9211: 感謝大家 ! 10/16 01:36