1

メモ帳で毎日ほぼ 100のアイテムを使用して特定のアイテムを検索する必要CTRL+Fがあります。それを知りたいのですが、すべてのアイテムを渡すスクリプトなどを作成する方法はありますか?成功した場合、検索出力が表示されます。つまり、メモ帳で見つかったすべてのアイテムが返されます。

私は取り組んでいwindowsます。時間の無駄を引き起こしているので助けてください。近い将来、アイテムが1000まで増加した場合、それは私にとって大きな回避策になるでしょう。

私は Perl についてある程度の考えを持っており、Perl では可能だと思うので、ここで質問しました。しかし、他の言語でスクリプトを提供したい場合は、提供してください。解決策が必要です。

4

5 に答える 5

3
use strict;
use warnings;

my $qfn   = 'file.txt';
my @terms = ( 'foo', 'bar', ... );

my %terms_not_found = map { $_ => 1 } @terms;

open(my $fh, '<', $qfn)
   or die("Can't open \"$qfn\": $!\n");

while (<$fh>) {
   for my $term (keys(%terms_not_found)) {
      delete $terms_not_found{$term} if /\Q$term/;
   }

   last if !%terms_not_found;
}

print("Found:\n");
print("$_\n")
   for grep !$terms_not_found{$_}, @terms;
于 2012-06-26T06:20:52.870 に答える
2

これが提案スレッドに変わることを望んでいないことに注意してください。

http://www.wingrep.com/

機能ページから:

  • コマンド ライン インターフェイス:強力な UNIX ライクなコマンド ライン インターフェイスにより、Windows Grep を DOS ボックスまたは他の Windows シェルから実行できます。

バッチ スクリプトで wingrep のコマンド ライン オプションを使用して検索を実行し、自動化を実行するために毎日/毎週/スケジュールされたタスクとして Windows に設定することができます。

于 2012-06-26T06:10:25.673 に答える
2

あなたは基本的に欲しいですgrep

grep -o pattern file.txt
于 2012-06-26T06:08:18.810 に答える
1

perl スクリプトは次のようになります。

use strict;
use warnings;

open(FILE,'<file.txt');
my @items=qw(abc 123 abc123 xyz);
my @match;

while(<FILE>)
{
 my @words=split(/ /,$_);
 foreach my $el(@items) {
    @match=grep {$el eq $_} @words;
    local $\=" ";    # Output separator
    print @match;
    }
}
于 2012-06-26T06:33:31.160 に答える
0

http://www.codeproject.com/Articles/4600/Notepad-RE-Regular-Expressionsを試すことができます。 これは非常に優れたツールです。"boost::regex" から perl 互換の正規表現を使用できます。

grep を実行するには、そのツールで次の置換構文を使用する必要があります。 .

その正規表現は、TEXT が含まれていない行をすべて削除します。

于 2012-06-26T13:08:06.467 に答える