Archiv verlassen und diese Seite im Standarddesign anzeigen : [Frage] Regular Expressions
hi
hoffentlich bin ich im richtigen forum
suche eine reg exp für das tool sed, damit ich folgendes realisieren kann
habe eine zeichenkette
c:\lalala\jijaij\xxxxx xxxx.lnk
xxx steht für eine beliebige zeichenkette mit evtl. leerzeichen
sie endet immer mit lnk
nun möchte ich diese zeichenkette ab dem letzten \ bis einschließlich dem .lnk entfernen
wie realisiere ich das mit reg ex?
ziel: pfadnamen zu der datei extrahieren
wäre sehr dankbar für vorschläge
greez
Der Gestreifte
04.06.03, 17:08
Muss es "sed" sein?
Ansonsten probier mal "echo "c:\lalala\jijaij\xxxxx xxxx.lnk"|cut -d\\ -f1-3"
weiß nicht ob dir das was bringt aber in perl würde das ungefähr so aussehen:
perl -e "$string = '/home/michael/test.lnk'; $string =~ s/^(.*)\/(?:.*?).lnk$/$1/ig; print $string;"
nein, muss net unbedingt sed sein
hab deins versucht
schon ganz gut, nur leider können die verzeichnistiefen unterschiedlich sein (was ich hätte reinschreiben sollen)
sprich: es müssen nicht immer 3 trennstriche sein
deswegen macht sich das mit cut bissl doof, da man immer nie weiß, wieviel felder man denn nun hat (soll in einem script mit vorher unbekannter verzeichnistiefe verwendet werden)
thx
greez
@oxidative
hab das ma in ein script gepackt
#!/usr/bin/perl
my $string = "c:\test\test\test.lnk";
$string =~ s/^(.*)\/(?:.*?).Ink$/$1/g; print $string;
print "\n";
ergebnis:
linux:~ # ./test.pl
c: est est est.lnk
:(
greez
ah sorry hab an linuxpfade gedacht, du musst also das / durch \ ersetzen:
#!/usr/bin/perl
my $string = "c:\test\test\test.lnk";
$string =~ s/^(.*)\\(?:.*?)\.lnk$/$1/ig;
print $string . "\n";
geht leider auch nicht
linux:~ # ./test.pl
c: est est est.lnk
ich vermute es liegt hier dran
s/^(.*)\\(?:.*?)
denn er verschluckt ja jeden "\T" - String
bin leider mit regex net so fit...
wäre sehr dankbar, für jede weitere hilfe !!!
greez
ok dass sollte jetzt endlich auch funzen:
#!/usr/bin/perl
my $string = 'c:\test\test\test.lnk';
$string =~ s/^(.*)\\(?:.*?)\.lnk$/$1/ig;
print $string . "\n";
@oxi
output:
linux:~ # ./test.pl
c: est est est.lnk
:(
:D
@ belkira
das scheint zu funzen
was genau bedeutet die syntax?
danke...
hat jmd. eine sehr gute referenz-man zu reg exp?
BIG THX
greez
Perl Tutorial: http://www.perldoc.com/perl5.8.0/pod/perlre.html
bist du sicher, dass du die " durch ' ersetzt hast?
@oxi...
*ggggggggggggggggggg
klappt, weiß net warum auf einmal :rolleyes:
THX
hmm, im vim würd ich folgendes schreiben:
:%s/^\(.*\\\)[^\\]*$/\1/
(ersetze in allen zeilen den ausdruck zeilenanfang bereich-mit-belibigen-zeichen-und-\-am-ende belibig-oft-nicht-\ zeilenende mit dem bereich)
müsst in sed so gehn:
echo "c:\bla\gwa\xxx xxx.lnk" | sed 's/^\(.*\\\)[^\\]*$/\1/'
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.