Hallo und willkommen.
zunächst, grep kann selber lesen ;-) Das cat braucht es nicht.
grep ime'[0-9]\{3\}' /var/etc/hosts
Ich vermute, dass Dein Problem in der Maskierung der Sonderzeichen liegt.
edit:
Hab es getestet; die \ müssen zusätzlich maskiert werden:
# qx// ist lesbarer als die Backticks
# die \ des grep-Pattern müssen maskiert werden, daher hier als \\
# hosts ist eine lokale Testdatei
$ perl -E '@aa = qx/grep "ime[0-9]\\{3\\}" hosts/; say join $/, @aa'
1.2.3.4 ime123
:edit
Aber wenn Du das Ergebnis in Perl haben willst, was spricht dagegen, die Suche selbst auch in Perl zu machen?
Damit bräuchtest Du Dir auch keine Gedanken machen, welches Sonderzeichen Du wie oft maskieren musst (Maskierung vor Perl? vor der Shell? ...).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use strict;
use warnings;
use 5.010;
my $file = "/etc/hosts";
open my $rh, '<', $file or die "open($file,ro) failed: $!";
my @array = grep { m/ime\d\d\d/ } <$rh>;
close $rh;
chomp @array;
say join "\n", @array;
Last edited: 2016-07-21 11:00:08 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!