有谁知道任何可以替换特定事件的 unix 命令/perl 脚本
我的文件是 hello.txt
number 555
number 555
number 555
现在我想用数字 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
我将文件 hello.txt 的内容读取到数组,然后加入以获取 $str。在这里,它将用初始化为 0 的 i 替换第二次出现。尝试此搜索并在一个衬里中替换。
$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
尝试使用sed
sed -r -i.bak ':a;N;$!ba;s/(number\s+)555/\1666/2' file
输出:
number 555
number 666
number 555