文字列が複数のファイルに表示されます。

文字列が複数のファイルに表示されます。

ファイルが2つあります。

  1. 入力.txt
  2. キーワード.txt

input.txt内容は次のとおりです。

.src_ref 0 "call.s" 24 first
      0x000000    0x5a80 0x0060         BRA.l 0x60
.src_ref 0 "call.s" 30 first
      0x000002    0x1bc5                RETI
.src_ref 0 "call.s" 31 first
      0x000003    0x6840                MOV R0L,R0L
.src_ref 0 "call.s" 35 first
      0x000004    0x1bc5                RETI

keyword.txt内容は次のとおりです。

MOV
BRA.l
RETI
ADD
SUB
..
etc

keyword.txtさて、このファイルを読んでinput.txtファイルから検索して、MOVこのファイルが何回発生するのかを知りたいと思いますBRA.l

これまで、私は単一のファイル自体でうまくいきました。これはコードです

#!/usr/bin/perl
use strict;
use warnings;

sub retriver();

my @lines;
my $lines_ref;
my $count;
$lines_ref=retriver();
@lines=@$lines_ref;
$count=@lines;
print "Count :$count\nLines\n";
print join "\n",@lines;

sub retriver()
{
    my $file='C:\Users\vk41286\Desktop\input.txt';
    open FILE, $file or die "FILE $file NOT FOUND - $!\n";
    my @contents=<FILE>;

    my @filtered=grep(/MOV R0L,R0L/,@contents);
    return \@filtered;
}

ここでは検索のみが可能MOVで、他の手順は検索できませんRETI

MOV,RETIなどをファイルに入れてkeyword.txt普遍的にしたいです。

出力は次のようになります。

MOV has occured 2  times
RETI has occured 1 time

ベストアンサー1

急いでいない場合は、perl簡単なコマンドラインを使用してください。

 grep -f keyword.txt -c input.txt

それは行わなければなりません。

では、コードで1に対して個別に行ったように、各キーワードを開いて繰り返しながら順番にgrepingするperl必要があります。keyword.txt

おすすめ記事