有誰知道任何UNIX命令/ perl腳本將取代特定occurence搜索並在文件中更換第n個occurence
我的文件hello.txt的
number 555
number 555
number 555
現在我想更換第二與數occurence 666
我一直在嘗試此命令
perl -n -i -e "s/number\\s+555/number 666/g" hello.txt
「
這是改變所有的事件。
一個內襯將是非常有幫助的。
有誰知道任何UNIX命令/ perl腳本將取代特定occurence搜索並在文件中更換第n個occurence
我的文件hello.txt的
number 555
number 555
number 555
現在我想更換第二與數occurence 666
我一直在嘗試此命令
perl -n -i -e "s/number\\s+555/number 666/g" hello.txt
「
這是改變所有的事件。
一個內襯將是非常有幫助的。
$.
保持行號爲當前文件句柄和可用於給定的輸入文件等,
perl -i -pe 's/number\s+555/number 666/ if $. == 2' hello.txt
,或者如果number
部分可以退學,
perl -i -pe 's/555/666/ if $. == 2' hello.txt
的[我怎麼能代替在一個Perl的正則表達式匹配的第n次出現?](
我讀取文件hello.txt的內容到數組,然後加入獲得$ str。在這裏,它將替換第二次出現與我初始化爲0.嘗試此搜索並替換在一個班輪中。
$str =~ s/(number\s+555)/ ++$i==2 ? "number 666": $1/gse;
Does anyone know any unix commands
:我相信awk
適合這個任務(http://www.grymoire.com/Unix/Awk.html)。
awk '{if (NR == 2) {gsub("555", "666", $0);} print $0; } ' hello.txt
使用try sed
sed -r -i.bak ':a;N;$!ba;s/(number\s+)555/\1666/2' file
輸出:
number 555
number 666
number 555
可能重複http://stackoverflow.com/問題/ 2555662 /如何-可以-I-替代最第n-發生對的一匹配-IN-A-perl的正則表達式) – Zaid