Forum: PC-Programmierung Perl/awk/ - Textersetzung


von Stefan (Gast)


Lesenswert?

Servus!

Ich glaube, dass hier sicher einige unter euch sind, die sich gut mit 
derartigen Textersetzungsprogrammen auskennen, die mit links eine 
Befehlszeile schreiben können, die:

Aus einer Textdatei Textstücke, die mit file= beginnen und mit .dat 
enden erfasst und diesem z.B. mit einem Newline oder einem Text getrennt 
in eine andere Textdatei schreibt.

Ich hab mir zwar schon Perl angesehen, aber ich bring es nicht zusammen.

Danke im Voraus,

Stefan

von Εrnst B. (ernst)


Lesenswert?

1
perl -ne '/^file=(.*\.dat)$/ && print $1,"\n"' source.txt > target.txt
Oder soll das "file=" auch mit in die Ausgabe, also ganze Zeilen 
kopieren?
1
perl -ne '/^file=.*\.dat$/ && print' source.txt > target.txt
Oder steht das "file=" nicht immer am Zeilenanfang, und das ".dat" nicht 
immer am Zeilenende, und das ganze kann mehrfach pro Zeile vorkommen?
1
 perl -ne 'while (/(file=[^\.]*\.dat)/g) { print $1,"\n";}' source.txt > target.txt

von Daniel (Gast)


Lesenswert?

Wenn file= und .dat nicht auf einer Zeile sind, dann kannst du awk 
vergessen. Ansonsten
1
cat deine datei | awk '/^file=\.dat$/{print $0}'

wenn deine Datei so aussieht

abc
123
file=xyz.dat
blabla
plumplum
file=dudilidu.dat
abc

kannst du wie oben gezeigt mit awk filtern

wenn es komplexer ist würde ich python nehmen
1
import re
2
pattern = re.compile(r'file=(.*)\.dat', re.M)
3
lst = re.findall(file("datei", "r").read())
4
for i in lst:
5
    print i

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.