Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Diskussionsforum
  • Search

Text mit sed vorformatieren

Unterhaltung über Gentoo und andere Themen: Alles was nicht in ein Support-Forum gehört.
Post Reply
  • Print view
Advanced search
12 posts • Page 1 of 1
Author
Message
passst
n00b
n00b
Posts: 3
Joined: Mon Apr 25, 2016 9:27 am

Text mit sed vorformatieren

  • Quote

Post by passst » Mon Apr 25, 2016 10:29 am

Hallo,

ich muss zwei unterschiedliche Versionen von einer Übersetzung vergleichen. Als Idee hatte ich die Texte nebeneinander in Tabellenkalkulation zu importieren. Der Punkt sollte als Trennzeichen fungieren. D.h. jede Zelle enthält genau einen Satz. Das klappt leider nicht, weil Tabulatoren und sonstige "unsichtbare" Sonderzeichen die Formatierung durcheinanderbringen. Ich habe dann versucht die Texte mit sed vorzuformatieren, so daß alle Zeilen der Textdateien mit einem Punkt enden.

Zeilen zusammenfügen, unsichtbare Zeichen etc geht mit sed wunderbar, aber wie füge ich zwei oder mehrere Zeilen bis zu einem bestimmten Satzzeichen, wie z.B. der Punkt zusammen?

Es soll also,
aaa
bbb.bbbb
ccc.

so aussehen:
aaabbb.
bbbccc.


Ich bin einfach nicht dahintergekommen. Geht das überhaupt mit sed? Oder hat jemand eine bessere Idee?
Top
py-ro
Veteran
Veteran
User avatar
Posts: 1734
Joined: Tue Sep 24, 2002 11:55 am
Location: Velbert
Contact:
Contact py-ro
Website

  • Quote

Post by py-ro » Mon Apr 25, 2016 10:56 am

Warum benutzt du nicht eines von den vorhandenen Diff Programmen?
Top
toralf
Developer
Developer
User avatar
Posts: 3944
Joined: Sun Feb 01, 2004 2:58 pm
Location: Hamburg
Contact:
Contact toralf
Website

  • Quote

Post by toralf » Mon Apr 25, 2016 5:38 pm

sed heißt (s)tream-line (ed)itor - das Design ist also, zeilenweise zu agieren. Da hast Du keine Chance mit diesem Use-Case, fürchte ich.
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Tue Apr 26, 2016 7:33 am

toralf wrote:sed heißt (s)tream-line (ed)itor - das Design ist also, zeilenweise zu agieren.
Ja, aber es gibt einen Zeilenspeicher und einen Befehl, den aktuellen Zeileninhalt an den Zeilenspeicher anzuhängen. Dann kann man diesen zurückholen und mit s/../../ splitten. Ich bin aber nicht genug sed-Guru, um den entsprechenden Code ohne längere Recherche hinzuschreiben. Ich würde das Problem mit perl lösen (oder zur Not mit awk, falls es aus irgendeinem Grund auf einem System ohne Perl laufen muss)
Top
l3u
Advocate
Advocate
User avatar
Posts: 2619
Joined: Wed Jan 26, 2005 3:12 pm
Location: Konradsreuth (Germany)
Contact:
Contact l3u
Website

  • Quote

Post by l3u » Wed Apr 27, 2016 10:18 pm

Im Zweifelsfall würde ich für sowas Perl nehmen. Perl ist immer gut für solche schmutzigen Angelegenheiten ;-)

Hier ist dein Ausgangs-String:

Code: Select all

$ echo -e "aaa\nbbb.bbb\nccc."
aaa
bbb.bbb
ccc.
Und hiermit macht Perl das, was du willst:

Code: Select all

$ echo -e "aaa\nbbb.bbb\nccc." | perl -ne "chomp; s/\./.\n/g; print;"
aaabbb.
bbbccc.
Natürlich auch nutzbar mittels

Code: Select all

cat datei | perl -ne "chomp; s/\./.\n/g; print;"
Top
toralf
Developer
Developer
User avatar
Posts: 3944
Joined: Sun Feb 01, 2004 2:58 pm
Location: Hamburg
Contact:
Contact toralf
Website

  • Quote

Post by toralf » Thu Apr 28, 2016 8:10 am

+1
Perl rules.
Top
musv
Advocate
Advocate
User avatar
Posts: 3380
Joined: Sun Dec 01, 2002 4:13 pm
Location: de

Re: Text mit sed vorformatieren

  • Quote

Post by musv » Fri Apr 29, 2016 2:10 pm

passst wrote: Es soll also,
aaa
bbb.bbbb
ccc.

so aussehen:
aaabbb.
bbbccc.
Bitte sehr:

Code: Select all

sed ':a;N;$!ba;s/\n//g;s/\./.\n/g' deine_datei.txt
Top
l3u
Advocate
Advocate
User avatar
Posts: 2619
Joined: Wed Jan 26, 2005 3:12 pm
Location: Konradsreuth (Germany)
Contact:
Contact l3u
Website

  • Quote

Post by l3u » Sun May 01, 2016 10:28 am

Na toll. Auch noch zwei Zeichen kürzer als meine Perl-Lösung! Aber die Leerzeichen könnt man ja weglassen ;-)

Aber Spaß beiseite: Aus rein wissenschaftlichem Interesse wäre es super, wenn du den sed-Befehl mal auseinanderpflücken und erklären würdest, was da was macht!
Top
Markus09
Tux's lil' helper
Tux's lil' helper
Posts: 86
Joined: Fri Mar 22, 2013 9:11 pm

  • Quote

Post by Markus09 » Sun May 01, 2016 12:16 pm

Code: Select all

sed ':a;N;$!ba;s/\n//g;s/\./.\n/g' deine_datei.txt
Da es mich interessiert hat, habe ich das mit der Doku mal zerpflückt.
Der Befehl mach also sowas:

Teil 1: :a;N;$!ba;
Lese alle Zeilen in den "Lesepuffer"
1) Vergebe das Label "a" (:a)
2) lese und hänge die nächste Zeile dem aktuelle Lesepuffer an (N)
3) Warte auf Ende der Datei ($)
4) Falls nicht, gehe wieder zu 1), wo was label "a" definiert wurde (!ba)
--> Damit sind alle Zeilen im Lesepuffer

Teil 2: s/\n//g
Entferne alle newlines

Teil 3: s/\./.\n/g
Füge nach allen Punkten ein newline ein
Top
l3u
Advocate
Advocate
User avatar
Posts: 2619
Joined: Wed Jan 26, 2005 3:12 pm
Location: Konradsreuth (Germany)
Contact:
Contact l3u
Website

  • Quote

Post by l3u » Sun May 01, 2016 9:38 pm

Abgefahren. Ich wusste gar nicht, dass sed sowas kann …
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Mon May 02, 2016 5:15 am

l3u wrote:Abgefahren. Ich wusste gar nicht, dass sed sowas kann …
sed ist vermutlich sogar Turing-vollständig (von der theoretischen Einschränkung der Stringlänge durch die Implementierung einmal abgesehen, natürlich). Es gibt sogar verschiedene Spiele, die in sed programmiert sind: Tetris, Türme von Hanoi, ... die einzige Einschränkung bei der Interaktivität ist natürlich, dass man nach jeder Eingabe "return" drücken muss.
Top
l3u
Advocate
Advocate
User avatar
Posts: 2619
Joined: Wed Jan 26, 2005 3:12 pm
Location: Konradsreuth (Germany)
Contact:
Contact l3u
Website

  • Quote

Post by l3u » Mon May 02, 2016 11:21 am

mv wrote:Es gibt sogar verschiedene Spiele, die in sed programmiert sind: Tetris
:-D

Das sed-Tetris erinnert mich allerdings stark an Brainfuck ;-)
Top
Post Reply
  • Print view

12 posts • Page 1 of 1

Return to “Diskussionsforum”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic