2013-03-15 87 views
1

我有一個有100多行的txt文件,我想搜索模式並刪除除最後一次出現以外的所有行。模式匹配和刪除除最後一次出現以外的所有行

以下是txt文件中的各行。

我的搜索模式是 「字符串1 =」, 「字符串2 =」, 「STRING3 =」, 「串,4 =」 和 「STRING5 =」

string1=hi 
string2=hello 
string3=welcome 
string3=welcome1 
string3= 
string4=hi 
string5=hello 

我想通過每行有保有壓「 string3 =「是空的文件,並刪除」string3 = welcome「,」string3 = welcome1「

請幫助我。

+0

你將不得不編寫一個程序來做到這一點。分享您迄今爲止編寫的程序,並告訴我們您卡在哪裏。 – 2013-03-15 23:42:16

回答

0

對於單一的模式,你可以像這樣開始:你提到

grep "string3" input | tail -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]=/; 
相關問題