#!/usr/bin/perl
use strict;
use warnings;
while (<>) {
print;
last if /<Title1>/i;
}
while (<>) {
if (/<Title/i) {
print "username4\n";
print;
last;
}
else {
print;
}
}
print while <>;
Использование:
mv users.list users.list.bak && ./users.pl <users.list.bak >users.list
Если файл небольшой, то можно проще:
mv users.list users.list.bak && perl -e '(my $ss = join "", <>) =~ s/(<Title1>[^<]+)(.+)/$1username4\n$2/is; print $ss;' <users.list.bak >users.list
Или:
$ perl -e '$/ = ""; <> =~ /(<Title1>[^<]+)(.+)/is && print $1, "user4\n", $2;' <users.list
<Title1>
username1
username2
username4
user4
<Title2>
username2
username3