2016-10-20 8 views
-1

Использование Perl в Shell скрипт, я пытаюсь извлечь слово «яблоко» из текстового файла под названием «Fruit.txt» (Файл имеет имя различных фруктов)извлечения данных из файла с помощью Perl

Для этого Я создал создал скрипт следующим образом:

#!/usr/bin/perl 
$t = 'cat Fruit.txt'; 

Как я могу теперь извлечь подстроку (в данном случае яблоко) из этого файла, используя Grep - о. Спасибо

+0

Обратите внимание, что ваша команда Perl присваивает строку _literal_ переменной '$ Т *. 'grep -o' относится к' grep' _utility_, который не связан с Perl. Как скрипты оболочки вводят изображение? – mklement0

ответ

1

надлежащим образом:

#!/usr/bin/perl 

use strict; use warnings; 

my $fic = './Fruit.txt'; 

open my $fh, "<", $fic 
    or die("An error hapenned opening file\n"); 

while (<$fh>) { 
    print if /Apple/i; 
} 

close $fic; 

Или:

#!/usr/bin/perl 

use strict; use warnings; 

while (<>) { 
    print if /Apple/i; 
} 

Использование:

./script.pl Fruits.txt 

Или краткий путь:

perl -ne 'print if /whatever/' file 

Плохой путь (не портативный), что кажется вам попробовать:

my $file = qx(cat Fruits.txt); 

или

my $file = `cat Fruits.txt`; 
      ~    ~ 

Примечание кавычку

1
# Rather than rely on the external program cat 
# you can "slurp" the contents of Fruits.txt into $t. 

open my $fh, "<", "Fruits.txt"; 
my $t = do { local $/; <$fh> }; 
close $fh;  


# The following is true if 'apple' appears anywhere in $t 
# (it will also match 'apples', 'grappled', etc...) 

if($t =~ /apple/){ 
    print "There is an apple!\n"; 
} 

# If Fruits.txt is more structured, you can also do things like:  

print "There is a $1!\n" if $t =~ /^fruit=(.+)/; 

Я рекомендую читать из perlrequick для получения дополнительной информации о регулярных выражениях.

0

Perl командной строки "ультра ленивым" трюк:

perl -e 'while(<>){print "\n$_\n" if $_ =~ /whatever/}' <FILE_PATH> 

: V

+0

'perl -ne 'print if/whatever /' ' –

+0

Да! Хороший гольф! –