Text vor und nach Zeichen vertauschen

werk

Mitglied
Thread Starter
Dabei seit
18.05.2015
Beiträge
96
Reaktionspunkte
3
Hallo,

wie kann ich in einem shell script (für einen Automator-Dienst) den Text vor und nach einem Trennstrich vertauschen? Text1 - Text2 --> Text2 - Text1
Die Googlesuchergebnisse bringen mir nicht den richtigen Regexausdruck(?) dafür, obwohl er wahrscheinlich gar nicht so schwierig ist, nehme ich an. Weiss ihn zufällig gerade jemand? Danke.

W.
 
awk -F- '{ print $2,"-",$1 }' datei.txt wäre ein Ansatz ... bisschen Feintuning müsstest selbst noch machen
 
Danke. Da es halt immer zusätzliche Leerzeichen am Anfang und um den Trennstrich herum gab, hab ich die noch entfernt. Manchmal kommt halt noch am Schluss in einer Zeile ein einzelnes Trennzeichen. Aber gut, das kann ich ja eben löschen, wird schon gehen. BTW @Silence7 das war nicht für iTunes gedacht, sondern eher für kleinere Texte in verschiedenen Programmen, wo ich hin und wieder mal schnell was sortieren und ändern muss.

Code:
awk -F- '{ print $2,"-",$1 }' | sed -e 's/^[ | ]*//' | sed -e 's/[ | ]*$//' | sed -E 's/[ | ]{2,}/ /g'
 
wo ich hin und wieder mal schnell was sortieren und ändern muss.
K.A. ob Dir das in Deinem Fall weiterhilft, aber Du kannst dem sort Befehl mit -k mitgeben, nach welcher Spalte gesucht werden soll.
Code:
> sort -k1 -n foo.txt
abc   555
def   111
> sort -k2 -n foo.txt
def   111
abc   555
 
das whitespace-getrimme sieht lustig aus. :p

wenn du eh' schon "sed -e" benutzt, brauchst du doch nicht alle seds einzeln pipen.
Code:
# echo blabla                         |         spaces löschen          strings tauschen        leerzeilen löschen
echo -e "      eins  -    zwei  \n\n" | sed -e 's/[[:space:]]*//g' -Ee 's/(.*)-(.*)/\2-\1/' -e '/^[[:space:]]*$/d'
 
Zuletzt bearbeitet:
Klar, sieht nich schön aus. Aber ehrlich, ich bin oft einfach froh, wenns überhaupt funktioniert.

BTW dein Code löscht allerdings alle Leerzeichen. Mein Space-Trimming wäre (neben Lererzeilen löschen): Anfang, Ende, Mehrfach-Spaces > Einfach-Space

Wenn du z.B. eine Notiz hast wie diese:

Ein Wort - 2 Wörter 3 Wörter
Blah - blah
Wort

Dann würde ich nur in Zeilen, die " - " (mit Leerzeichen vorher und nachher) enthalten, die Blöcke davor & dahinter tauschen und dann Space-Trimming (Anfang, Ende, Mehrfach-Spaces > Einfach-Space).
Und für Zeilen, die nicht " - " enthalten, eigentlich nur Space-Trimming. Leider gibt er mir für die letzte Zeile (im Bsp.) dann "- Wort" zurück.
 
das ist auch nur als beispiel gedacht und dafür habe ich doch extra darüber kommentiert – und ich kenne deine genauen anforderungen ja nicht.
 
Zuletzt bearbeitet:
Zurück
Oben Unten