2013-07-08 6 views
5

Czy to błąd ... czy jest jakieś wytłumaczenie?Polecenie Sed - kolejność flag opcji ma znaczenie? (-ir vs -ri)

Należy pamiętać, że nie szukam obejście ale raczej dlatego kolejność -ir i -ri sprawach ...


Wyobraź sobie następujące dane przechowywane w plikudata.txt

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

Żądana transformacja ciągów

Replace "StringString" with "Strung" 

z następującego kodu

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

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

Nie widzę żadnego powodu, dlaczego kolejność flagi opcji miałoby znaczenia ? Jakieś wyjaśnienia?

Sidenotes: Przełącznik -i „edycja pliku w miejscu”, a R umożliwia „rozszerzone regularne ekspresji” (pozwala operatorowi +). Uruchomienie sed 4.2.1 Dec. 2010 na Ubuntu 12.10.

Odpowiedz

3

Podczas -ir jesteś zaznaczając, że „r” powinno być przyrostek do pliku kopii zapasowej.

Powinieneś być w stanie wykonać -i -r, jeśli potrzebujesz ich w tej kolejności

5

Czy sprawdziłeś sed - help lub 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

Wykonanie !! Och, właśnie znalazłem plik o nazwie "data.txtr" w katalogu - który został utworzony jako kopia zapasowa. Spodziewałem się przestrzeni, by oddzielić sufiks, ale teraz ma to sens. – somethis