0
System Database Directory

 Number of entries in the directory = 3

Database 1 entry:

 Database alias                       = Sample
 Database name                        = sample
 Local database directory             = /home/db2inst1
 Database release level               = b.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

Database 2 entry:

 Database alias                       = sample2
 Database name                        = sample2
 Local database directory             = /home/db2inst1
 Database release level               = b.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

Database 3 entry:

 Database alias                       = sample3
 Database name                        = sample
 Local database directory             = /home/db2inst1
 Database release level               = b.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

システム コマンドを実行すると、次のテキストが表示されます。私はsample,sample2,sample3出力としてのみ欲しい。私はこれをシェルで行うことに慣れていますが、perl は初めてです。

4

3 に答える 3

2

-nワンライナーでオプションを使用して、パイプ経由で送信された stdin を処理できます。

yourcommand | perl -F'\s*=\s*' -anlwe '/Database alias/ && print $F[1]' 

これは単なる-a正規表現の分割 ( ) であり、/\s*=\s*/等号で分割され、周囲の空白が取り除かれます。ターゲット テキストが見つかると、文字列である 2 番目のフィールドが出力されます。

于 2013-02-19T08:33:06.467 に答える
0

次のように、openでシェルコマンドを使用できます。

open(IN,"cmd_that_generate_the_output|grep -i 'Database alias'|cut -f2 -d'='|cut -f2 -d' '|") or die;
while (my $str = <IN>){
  print "str: $str\n";
}
于 2013-02-19T09:03:03.207 に答える