我已經包含行的塊看起來像這樣的文件:的Perl:追加模式匹配的最後一行後面的線(但圖案的一部分遞增)
some lines
param.1=valueA
param.2=valueB
param.3=valueC
some other lines
我試圖找到一個perl單行添加在線param.3
(以及最高編號的參數)之後,新行像"param.4=valueD"
我嘗試了幾個"perl -i -pe"
命令,但一直未能執行它。 我幾乎想要自己替換找到的最後一行匹配+一個新行,我會增加一個值。
例(其中我還沒有找到如何做增量)
==#> cat /tmp/myfile.txt
param.1=valueA
param.2=valueB
param.3=ValueC
==#> perl -pe 'BEGIN{undef $/;} s/((param\.(\d+)=\S+\s+)*)/\1param.\3=newvalue\n/ms' /tmp/myfile.txt
param.1=valueA
param.2=valueB
param.3=ValueC
param.3=newvalue
請向我們展示您採取的一些方法。 – simbabque
例(其中我還沒有找到如何做增量) ==#>貓/tmp/myfile.txt param.1 =值a param.2 = VALUEB param.3 = ValueC == #>/usr/bin/perl -pe'BEGIN {undef $ /;} s /((param \。(\ d +)= \ S + \ s +)*)/ \ 1param。\ 3 = newvalue \ n/ms' /tmp/myfile.txt param.1 = valueA param.2 = valueB param.3 = ValueC param.3 = newvalue – burgergold
爲什麼它必須是單線程?像這樣的東西最好用一個小腳本來完成。有機會,你會稍後重複使用它。 – shawnhcorey