2016-10-12 2 views
-2

Мне нужна небольшая помощь, я новичок в Perl. Если, например, в файле с именем out.txt, который содержит следующие данные:Как искать несколько слов в файле с помощью регулярных выражений

Apple Banana potato 
Ashok is a boy 
Apple is good 

все три предложения в трех разных строках мне нужно искать первое вхождение apple и Ashok в файл и распечатать 3-е слово в этой строке т.е. «potato», «a». А также распечатайте 0, если он не найдет слово. Как я могу это сделать? Пожалуйста, помогите :) TIA

+0

Что вы попробовали? Где вы застряли? С какими проблемами вы сталкиваетесь? –

+0

Я не знаю, как правильно использовать правильные выражения, было бы полезно, если бы вы могли написать пример кода –

+2

Начните с чтения 'perldoc perlretut' и после этого не стесняйтесь задавать любые вопросы, которые остаются без ответа после выполнения должной осмотрительности и после написав столько кода, сколько вы можете сами, чтобы предоставить нам контекст. – DavidO

ответ

0
use strict; 

my %uniquekey=(); 
open (FH, "out.txt"); 
while (<FH>) 
{ 
    my $line=$_; 
    if($line=~m/([\w]+)\s([\w]+)\s([\w]+).*$/i || $line=~m/([\w]+)\s([\w]+).*$/i) 
    { 
     my $first=$1; 
     my $third=$3; 

     if($third eq ""){$third=0} 
     if(!exists($uniquekey{$first})){ 
      $uniquekey{$first}=$first; 
      print "$first $third\n"; 
     } 
     elsif($third ne "") 
     { 
      print "$third\n"; 
     } 

    } 
} 
close FH; 
+0

Нет, он не работает –

+0

Я хочу, чтобы код искал слово в файле не в строке ... и распечатал 2-е слово в этой строке .. если оно не находит слово в файле (не в строке) print 0 –

+0

Его чтение только из файла, мы получаем строку за строкой в ​​цикле while. поместите файл в тот же путь, где вы выполняете файл perl. – Magesh04

Смежные вопросы