Jak usunąć komentarze i puste linie z pliku w systemach Linux/Unix?

Zapewne nie jeden z Was zastanawia się jak można usunąć puste linie, bądź komentarze w dowolnych plikach tekstowych. Z pomocą przychodzi nam między innymi program grep dostępny we wszystkich systemach Linux i Unix.

Spójrzmy zatem na przykładowy plik: licznik.sql z którego będziemy wpierw usuwać puste linie, a później komentarze:

-- plik: licznik.sql
-- utwórz sekwencje licznik
CREATE SEQUENCE licznik
minvalue 1
maxvalue 9999

-- wartość od której zaczynamy
start with 1

increment by 1

Zacznijmy zatem od usunięcia pustych linii. Składnia naszego polecenia wygląda jak poniżej:

grep -v ^$ licznik.sql

zaś jego wynik prezentuje się następująco:

-- plik: licznik.sql
-- utwórz sekwencje licznik
CREATE SEQUENCE licznik
minvalue 1
maxvalue 9999
-- wartość od której zaczynamy
start with 1
increment by 1

Wróćmy do naszego wzorcowego pliku: licznik.sql i usuńmy z niego teraz komentarze. W naszym przykładzie komentarze poprzedzone są znakami: --.

grep -v ^-- licznik.sql

Wynik powyższego polecenia:

CREATE SEQUENCE licznik
minvalue 1
maxvalue 9999

start with 1

increment by 1

W Twoich plikach komentarz może być poprzedzony innym znakiem, np: #. Nie zapomnij tego zmienić w Twoim poleceniu.

Wiemy już jak usunąć komentarze i puste linie z pliku tekstowego. Połączmy zatem oba te polecenia w jedno i przekierujemy ich wynik do pliku:

grep -v ^$ licznik.sql | grep -v ^-- licznik.sql > nowy-licznik.sql

W wyniku powyższego zapytania powstał nowy plik: nowy-licznik.sql, który zawiera kod z pliku: licznik.sql, ale już bez komentarzy i pustych linii. Jego zawartość wygląda następująco:

CREATE SEQUENCE licznik
minvalue 1
maxvalue 9999
start with 1
increment by 1