mikrocontroller.net

Forum: PC-Programmierung Perl/awk/ - Textersetzung


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
perl -ne '/^file=(.*\.dat)$/ && print $1,"\n"' source.txt > target.txt
Oder soll das "file=" auch mit in die Ausgabe, also ganze Zeilen 
kopieren?
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?
 perl -ne 'while (/(file=[^\.]*\.dat)/g) { print $1,"\n";}' source.txt > target.txt

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn file= und .dat nicht auf einer Zeile sind, dann kannst du awk 
vergessen. Ansonsten
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
import re
pattern = re.compile(r'file=(.*)\.dat', re.M)
lst = re.findall(file("datei", "r").read())
for i in lst:
    print i

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.