marce schrieb:Verstehe ich richtig: Du möchtest alle
finden?Code:foo bar
Dann könntest Du den Zeilenumbruch als Steuerzeichen in den Teststring einbauen...
Jupp, denn ich hatte die Frage vom TE so verstanden, dass eine Zeile mit bar beginnt und mit foo endet, egal was zwischen drin steht. Aber nun ist klar was der TE will und Du hast eine gute Lösung angegeben :up:notoxp schrieb:... Übrigens: Die ürsprünglich vorgeschlagene grep-Kombination würde auch '^barxxxfoo$' finden...
notoxp schrieb:Übrigens: Die ürsprünglich vorgeschlagene grep-Kombination würde auch '^barxxxfoo$' finden...
grep -A 1 '^[ScreenSaver]$' /pfad/datei | grep '^Enabled=false$'
Achso, du willst eine Config-Datei parsen!catweasel schrieb:Code:grep -A 1 '^[ScreenSaver]$' /pfad/datei | grep '^Enabled=false$'
perl -ne 'if (/^\s*\[([^]]+)\]/){
$block=$1;
next;
}
if(/=/){
($key,$value)=split/\s*=\s*/;
print $value if ($block eq "ScreenSaver" and $key eq "Enabled");
}' /pfad/datei
notoxp schrieb:Wer sagt denn, dass die Enabled-Zeile immer 1 hinter dem Block-Bezeichner steht?
abgdf schrieb:soll auch in grep Perl-Regexps verstehen ...Code:grep -P
Nützt in diesem Fall wenig, da die RegEx auch zeilenweise angewendet wird...abgdf schrieb:soll auch in grep Perl-Regexps verstehen ...Code:grep -P
notoxp schrieb:Oder aber ein fertiges perl-Modul benutzen: http://search.cpan.org/~sherzodr/Config-Simple-4.59/Simple.pm
#! /usr/bin/perl -w
use strict;
use Config::Simple;
my $file='/home/vv/.kde/share/config/kickerrc';
my $cfg = new Config::Simple();
$cfg->read($file) or die $cfg->error();
my %Config = $cfg -> vars();
print $_, "\n" foreach keys %Config;
vv@linux-aais:~> ./config.pl
Something went wrong. No supported configuration file syntax found at /usr/lib/perl5/site_perl/5.10.0/Config/Simple.pm line 184, <FH> line 58.
#! /usr/bin/perl -w
use strict;
use Config::Simple;
my $file='/home/vv/.kde/share/config/kickerrc';
my $cfg = new Config::Simple();
open(FH, $file);
printf("This file uses '%s' syntax\n", $cfg->guess_syntax(\*FH));
This file uses 'ini' syntax