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

Was zum knobeln

Unterhaltung über Gentoo und andere Themen: Alles was nicht in ein Support-Forum gehört.
Post Reply
  • Print view
Advanced search
4 posts • Page 1 of 1
Author
Message
tazinblack
Veteran
Veteran
User avatar
Posts: 1146
Joined: Sun Jan 23, 2005 12:20 pm
Location: Baden / Germany

Was zum knobeln

  • Quote

Post by tazinblack » Thu Mar 24, 2016 10:09 am

Hallo zusammen,

ich hab hier was für die template matcher und regex Experten unter Euch!

Ich habe das folgende Problem:

Bisher ersetze ich in Textdateien, welche ein spezielles Format haben alle Hochkommas durch einen Zeilenumbruch (mit Wagenrücklauf) also sprich

Code: Select all

sed "s/'/\r\n/g" $ORGFILE > $ZIELFILE
Also die Daten kommen quasi alle "in einer Zeile", wobei dieses Format eben den Zeilenumbruch mit dem Hochkomma kennzeichnet.
Jetzt gibt dieses Format vor, dass man vor Sonderzeichen ein Fragezeichen als Fluchtzeichen setzen kann, welches dann die Bedeutung des Sonderzeichens aufhebt.

Code: Select all

Also 
'    -> Zeilenumbruch
?'   -> kein Zeilenumbruch sondern das Zeichen '
Das heißt, wenn ich den obigen Filter drüber laufen lasse, habe ich im gegebenen Fall zu viele Zeilenumbrüche.

Klar könnte ich jetzt das folgende tun:

Code: Select all

sed "s/?'/Ä/g" $ORGFILE > $ZIELFILE2
sed "s/'/\r\n/g" $ZIELFILE2 > $ZIELFILE3
sed "s/Ä/?'/g" $ZIELFILE3 > $ZIELFILE
Also sprich zuerst "?'" durch ein anderes Zeichen (hier ein großes Ä) ersetzen, dann den gehabten Filter drüber laufen lassen und als drittes das andere Zeichen (großes Ä) wieder zurück in "?'" wandeln.

Das Problem ist aber, dass das nur solange gut geht, wie ich ein Zeichen finde, welches sonst keine Verwendung hat in diesem Format.
Und da wird es schwierig.

Seht ihr da eine elegantere Lösung?
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Top
tazinblack
Veteran
Veteran
User avatar
Posts: 1146
Joined: Sun Jan 23, 2005 12:20 pm
Location: Baden / Germany

  • Quote

Post by tazinblack » Thu Mar 24, 2016 10:33 am

... ich glaube so wäre es relativ Prozesssicher

Code: Select all

sed "s/?'/GrIeSbReI/g" $ORGFILE | sed "s/'/\r\n/g" | sed "s/GrIeSbReI/?'/g" > $ZIELFILE
... aber nicht sehr elegant!
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
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 » Thu Mar 24, 2016 12:03 pm

Ungetestet, aber sollte

Code: Select all

sed "s/([^?]|?)'/\1\r\n/g" $ORGFILE > $ZIELFILE
nicht ausreichen?
Top
__bjoern
n00b
n00b
Posts: 28
Joined: Sun Oct 12, 2014 4:12 pm

  • Quote

Post by __bjoern » Fri Mar 25, 2016 2:42 pm

@py-ro Ich glaube bei deiner Lösung wird immer ein \r\n eingefügt, was bei einem ?' ja nicht passieren soll.

Hier mal meine Variante:

Code: Select all

$ sed -e "s/\([^?]\)'/\1\r\n/g" -e "s/?'/'/g"
Getestet mit folgenden Fällen:

Code: Select all

$ echo "abc'def" | sed -e "s/\([^?]\)'/\1\r\n/g" -e "s/?'/'/g"
abc
def

Code: Select all

$ echo "abc?'def" | sed -e "s/\([^?]\)'/\1\r\n/g" -e "s/?'/'/g"
abc'def
Top
Post Reply
  • Print view

4 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