Magiczny jednoliniowiec BASHa wykorzystujący dwie funkcjonalności komendy GNU sed:



sed '/regexp/,/regexp/ s/regexp/replacement/'


Komenda najpierw znajduje określoną sekcję pomiędzy dwoma wyrażeniami regularnymi /regexp/,/regexp/ a następnie w tej sekcji wykonuje substytucję wartości zdefiniowaną w s/regexp/replacement/.


Sprawdza się podczas modyfikowania plików konfiguracyjnych INI oraz TOML lub innych posiadających zdefiniowane sekcje, gdzie wartości w sekcjach się powtarzają (innymi słowy nie są unikalne dla całego pliku konfiguracyjnego).


Przykład gdzie wartość "xxx" zostanie zamieniano na "zzz" tylko w sekcji "[aaa]":

echo -e '[aaa]\nxxx\n[bbb]\nxxx\n[ccc]\nyyy' | sed '/^\[aaa\]/,/^\[/ s/xxx/zzz/'


Przykład gdzie wartość "xxx" zostanie zamieniano na "zzz" tylko w sekcji "[bbb]":

echo -e '[aaa]\nxxx\n[bbb]\nxxx\n[ccc]\nyyy' | sed '/^\[bbb\]/,/^\[/ s/xxx/zzz/'


#technologia #linux #bash #oneliner #sed

17845825-86de-4f9e-b271-0adee16a784f

Komentarze (0)

Zaloguj się aby komentować