1

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」を削除したい

私を助けてください。

4

2 に答える 2

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スクリプトは、リストを標準入力として受け取り、言及したように出力を処理します。これは、ソートされた出力としてキー (string*) が必要であると想定しています。

string1-5 で始まる値のみが必要な場合は、次のように while ループの先頭に一致を配置できます。

next if ! /^string[1-5]=/;
于 2013-03-16T00:08:12.090 に答える
0

単一のパターンの場合、次のようなものから始めることができます:

grep "string3" input | tail -1
于 2013-03-15T23:37:50.297 に答える