Thread Syntax für Systemaufruf an array übergeben (1 answers)
Opened by DerJentz at 2016-07-21 07:25

Linuxer
 2016-07-21 10:28
#185115 #185115
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Hallo und willkommen.

zunächst, grep kann selber lesen ;-) Das cat braucht es nicht.

Code: (dl )
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:

Code: (dl )
1
2
3
4
5
# 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? ...).

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /usr/bin/perl
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;

# optionally, remove Newlines from matches
chomp @array;

# check result
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!

View full thread Syntax für Systemaufruf an array übergeben