Jak dodać dowolny znak na końcu każdego wiersza w pliku tekstowym/csv w Linux?

Czasami zachodzi konieczność dodania konkretnego znaku na końcu każdego wiersza w systemach Linux.
Metod jest kilka. W ninejszym wpisie przedstawię jedną z nich – przy wykorzystaniu awk.

Składnia polecenia wygląda następująco:

awk -F "*" '{print $1"X"}' plik_zrodlowy.csv > plik_docelowy.csv

gdzie w miejscu: X określamy znak jaki zostanie wstawiony na końcu każdego wiersza.

Spójrzmy na przykład. Do tabeli w bazie danych próbujemy załadować plik: przyklad.csv o poniższej zawartości:

jeden;dwa;trzy
cztery;piec;szesc

Próba załadowania pliku kończy się poniższym błędem:

846: Number of values in load file is not equal to number of columns.

Oczywiście nasza docelowa tabela posiada 3 kolumny, a powyższy błąd spowodowany jest brakiem średnika na końcu każdego wiersza.

Dodajmy zatem średnik na końcu każdej linijki naszego pliku i zapiszmy go jako gotowy-przyklad.csv

Wykonamy to poniższym poleceniem:

awk -F "*" '{print $1";"}' gotowy.csv > gotowy-przyklad.csv

Zobaczmy teraz jak wygląda nasz plik: gotowy-przyklad.csv

jeden;dwa;trzy;
cztery;piec;szesc;

Średnik na końcu każdego wiersza został dodany. Plik również został poprawnie zaimportowany do bazy danych, co potwierdził komunikat:

2 row(s) loaded.

W powyższym przykładzie dodawałem znak średnika na końcu każdego wiersza. Nic nie stoi jednak na przeszkodzie, aby był to inny dowolny znak. Wystarczy tylko zamienić średnik na inny znak. Poniżej przykład dla pipe “|“.

awk -F "*" '{print $1"|"}' przyklad.csv > gotowy-przyklad.csv

Teraz plik gotowy-przyklad.csv wygląda następująco:

jeden;dwa;trzy|
cztery;piec;szesc|