SED w macOS

W byciu informatykiem dla programistów tudzież modnym człowiekiem-orkiestrą od DevOps trzeba spełnić różne wymagania. Niektórzy mają problem z brodą (-: Problemy w byciu DevOpsem. Przykładowy problem z wyhodowaniem brody.

Mi się trafił za to problem z jabłkiem. W sumie od po dwóch latach pracy mogę śmiało stwierdzić, ze macOS jest wygodnym środowiskiem pracy do nowomodnych zabawek i mniej nią niego klnę ni na Windows. Chociaż z zazdrością czasem patrzę na rysik w Surface.

Przechodzą do problemu przy pracy z tytułowym SEDem było coś nie tak. Niby prosta komenda do zmiany zawartości w pliku pomiędzy dwoma znacznikami, a nie działa - sed -n '/foo/{p;:a;N;/bar/!ba;s/.*\n/REPLACEMENT\n/};p' file i wali głupim błędem sed: 1: "/foo/{p;:a;N;/bar/!ba;s ...": unexpected EOF (pending }'s). Myślałem, że może ja nie potrafię po sedowemu, wklejam w CentOSa i wszystko ok. Jak się okazuje SED w macOS jest przedpotopowy. 2005 rok! Czyli w momencie pisania już ma 13 lat… Domyślna wersja SED w macOS. 2005 rok... Naprawa problemu jest banalna i wystarczy zainstalować wersję GNU SEDa. Najłatwiej jest to wykonać przez brew jednym poleceniem.

brew install gnu-sed --with-default-names

Pierdoła o której człowiek zapomina i przy zmianie komputer odkrywa na nowo ;-)