2013-07-08 9 views
5

Ist es ein Fehler ... oder gibt es eine Erklärung?Sed Befehl - Reihenfolge der Option Flags Angelegenheiten? (-ir vs -ri)

Bitte beachten Sie, dass ich nicht für dieses Problem zu umgehen bin auf der Suche, sondern warum die Reihenfolge der -ir und -ri Angelegenheiten ...


Stellen Sie sich die gespeichert folgenden Daten in der Datei data.txt

1, StringString, AnotherString 545 
2, StringString, AnotherString 723 
3, StringString, AnotherString 610 
4, StringString, AnotherString 118 
5, StringString, AnotherString 482 

Gewünschte string transformation

Replace "StringString" with "Strung" 

Mit dem folgenden Code

sed -ir 's/String+/Strung/g' data.txt <-- won't work 

sed -ri 's/String+/Strung/g' data.txt <-- will work 

Ich sehe keinen Grund, warum die Reihenfolge des Optionsflags würde eine Rolle? Irgendwelche Erklärungen?

Marginalien: Der Schalter -i "bearbeitet die Datei in place", während -r " regulären Ausdruck erweitert" ermöglicht (so dass der + Operator). Läuft sed 4.2.1 Dez. 2010 auf Ubuntu 12.10.

Antwort

3

Wenn tun -ir Sie angeben, dass „r“ sollte das Suffix für die Sicherungsdatei sein.

sollten Sie in der Lage sein -i -r zu tun, wenn man sie in dieser Reihenfolge

5

Haben Sie überprüft sed --help oder man sed?

-i[SUFFIX], --in-place[=SUFFIX] 
       edit files in place (makes backup if extension supplied). 
       The default operation mode is to break symbolic and hard links. 
       This can be changed with --follow-symlinks and --copy. 
+0

tun müssen !! Oh, ich habe gerade die Datei "data.txtr" im Verzeichnis gefunden - die als Backup erstellt wurde. Ich habe erwartet, dass ein Leerzeichen das Suffix trennt, aber jetzt macht es Sinn. – somethis