我有一个包含100多行的txt文件,我想搜索模式并删除除最后一次之外的所有行。
以下是txt文件中的行。
我的模式搜索是“string1 =”,“string2 =”,“string3 =”,“string4 =”和“string5 =”
string1=hi
string2=hello
string3=welcome
string3=welcome1
string3=
string4=hi
string5=hello
我想浏览每一行,并在文件中保持“string3 =”为空,并删除“string3 = welcome”,“string3 = welcome1”
请帮帮我。
答案 0 :(得分:0)
对于单个模式,您可以从以下内容开始:
grep "string3" input | tail -1
答案 1 :(得分:0)
#!/usr/bin/perl
my %h;
while (<STDIN>) {
my ($k, $v) = split /=/;
$h{$k} = $v;
}
foreach my $k ( sort keys %h ) {
print "$k=$h{$k}";
}
这里的perl脚本会将你的列表作为标准输入和进程输出。假设您希望将键(字符串*)作为排序输出。
如果您只想要以string1-5开头的值,那么您可以将匹配放在while循环的开头,如下所示:
next if ! /^string[1-5]=/;