有没有人知道任何替换特定事件的unix命令/ perl脚本
我的文件是hello.txt
number 555
number 555
number 555
现在我想用数字666替换第二次出现。
我一直在尝试这个命令
perl -n -i -e "s/number\\s+555/number 666/g" hello.txt
“
正在改变所有出现的情况。
一个衬里将非常有帮助。
答案 0 :(得分:1)
$.
保存当前文件句柄的行号,可用于给定的输入文件,如
perl -i -pe 's/number\s+555/number 666/ if $. == 2' hello.txt
或者如果number
部分可以退出,
perl -i -pe 's/555/666/ if $. == 2' hello.txt
答案 1 :(得分:0)
我将文件hello.txt的内容读入数组,然后加入获取$ str。在这里它将替换第二次出现,我初始化为0.尝试此搜索并替换为一个衬垫。
$str =~ s/(number\s+555)/ ++$i==2 ? "number 666": $1/gse;
答案 2 :(得分:0)
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
答案 3 :(得分:0)
尝试使用sed
sed -r -i.bak ':a;N;$!ba;s/(number\s+)555/\1666/2' file
输出:
number 555
number 666
number 555