Perl/awk/ - Textersetzung

Gast #1270507
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
#1270520
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
Gast #1271604
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren