[问题] 取代+新增某行+读取值放在取代后面

楼主: tony9211 (公車奇想男)   2016-09-29 00:02:32
嗨嗨 各位前辈
这是我之前的关于取代的 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
感谢大神了
希望可以加个注解了
愿意以新竹的 星巴克/麦当劳/摩斯 答谢 :)
作者: Neisseria (Neisseria)   2016-10-01 15:00:00
这需求蛮特别的,其实不是很清楚这样子要做什么或许到 code job 发个案,找人帮忙做做看而且似乎不限于 Perl,或许有其他的工具也说不定
作者: mmonkeyboyy (great)   2016-10-01 20:45:00
这不特别 先把他存起来 不要一行一行处理最后再一次把资料处理好送出去就好了
楼主: tony9211 (公車奇想男)   2016-10-02 00:36:00
还是想要用Perl 这样可以顺便学习XD看来好像难度有点高QQ 我在想办法惹
作者: icbruce (justlikethis)   2016-10-04 20:32:00
推 mmonkey 存到变量去parse 出来处理
作者: MistQ   2016-10-05 01:17:00
你的读档会把整个档案内容当字串,如果不打算一行行处理删除bbb行 或许可用取代 $data=~s/bbb\r?\n//g 方式...
楼主: tony9211 (公車奇想男)   2016-10-16 01:36:00
感谢大家 !

Links booklink

Contact Us: admin [ a t ] ucptt.com