sed i awk bez strachu przed manualem
sed i awk to dwa małe programy uniksowe do przekształcania tekstu. sed edytuje plik linia po linii (zamień, usuń, wstaw). awk czyta tabele i robi obliczenia albo filtrowanie kolumn. Są na każdym Macu, każdym Linuksie, każdym serwerze, na który się logujesz. Nie wymagają instalacji. Są też słynnie kryptyczne: składnia powstała w 1977 i od tamtej pory się nie zmieniła.
Ten pomocnik buduje komendę za Ciebie. Wybierz akcję (zamień, usuń linię, wypisz kolumny, zsumuj kolumnę...), uzupełnij pola, a po prawej stronie pojawia się gotowa komenda. Pod spodem podgląd na żywo odpala tę samą logikę w przeglądarce na przykładowym tekście, który możesz edytować, więc widzisz wynik zanim skopiujesz i wkleisz.
Obsługujemy najprzydatniejszy podzbiór obu narzędzi (substitute, delete, insert / append / change linii, print zakresu dla seda; print kolumny, warunkowy print, count, sum, average, filter, własny program dla awk), plus książka kucharska z 20 gotowymi przepisami: usuń puste linie, ścisnij spacje, zsumuj kolumnę, pogrupuj po kolumnie i policz, skonwertuj CSV na TSV i więcej. Kliknij dowolny przepis, żeby załadować go do buildera.
Ważne: podgląd używa JavaScript regex, który jest bliski POSIX extended regex, ale nie jest identyczny z GNU sed ani BSD sed. Dla codziennych zamian i pracy z kolumnami daje poprawny wynik. Dla narożnych przypadków (lookaroundy, granice słów zależne od locale, złożone zakresy adresów) sprawdź FAQ.
Jak używać
- Wybierz narzędzie na górze: sed do edycji całych linii (zamień, usuń, wypisz, wstaw) albo awk do kolumn (wypisz kolumnę, zsumuj, filtruj po wartości).
- W trybie sed wybierz akcję (Substitute, Delete, Print tylko pasujące, Insert przed linią N, Append po linii N, Replace linię N, Print linie N do M). Pod spodem pojawią się odpowiednie pola.
- Wpisz wzorzec i zamiennik dla substitute, albo numer linii dla insert / append / change. Flagi (g, i, p, N-te) to chipy, które klikasz, żeby włączyć albo wyłączyć.
- Edytuj przykładowe wejście po prawej, żeby pasowało do kształtu Twoich prawdziwych danych. Panel wyniku aktualizuje się na żywo: widzisz dokładnie, co zrobi komenda, zanim ją skopiujesz.
- Włącz In-place edit, jeśli chcesz, żeby plik został zmodyfikowany bezpośrednio (`-i`). Wybierz GNU dla Linuksa albo BSD dla macOS, pomocnik pokaże odpowiedni wariant (`-i` kontra `-i ""`).
- W trybie awk wybierz separator pól (domyślnie biały znak, przecinek dla CSV, średnik, tabulator albo własny znak). Potem wybierz akcję: wypisz kolumnę N, warunkowy print, policz dopasowania, sumę, średnią, filtrowanie albo napisz własny program.
- Otwórz książkę kucharską na dole, gdzie znajdziesz 20 gotowych przepisów (10 dla seda, 10 dla awk). Kliknij przepis, żeby załadować do buildera, dopasuj i skopiuj finalną komendę.
- Skopiuj komendę z prawej strony. Wklej do terminala i podstaw swoją prawdziwą nazwę pliku zamiast `file.txt`. Panel wyniku służy do weryfikacji, nie do produkcji: uruchom komendę na pliku dopiero, gdy zaufasz wynikowi.
Kiedy się przydaje
Sześć prawdziwych sytuacji, w których sed albo awk oszczędzą Ci minuty (albo godziny):
- Masowa zamiana stringa w wielu plikach. Zmieniłeś nazwę zmiennej z `userId` na `accountId` w projekcie. `sed -i 's/userId/accountId/g' src/**/*.ts` robi cały kod jedną komendą, szybciej niż "znajdź w plikach" w IDE i działa po SSH na serwerze.
- Czyszczenie loga przed analizą. Log ma puste linie, debug-szum i 50 kolumn, a Ty potrzebujesz tylko 3. `awk '/ERROR/ { print $1, $5, $9 }'` zostawia tylko linie z błędem i tylko kolumny timestamp, status i wiadomość. Jedna linijka, bez biblioteki do parsowania.
- Konwersja CSV na TSV. Jedno narzędzie eksportuje CSV, inne chce TSV. `awk -F',' '{$1=$1; print}' OFS='\t'` zamienia separatory za jednym zamachem, bez Pythona, bez Excela, bez plików tymczasowych.
- Wyciągnięcie zakresu z pliku. Potrzebujesz linii 1000 do 2000 z 50-tysięcznego loga. `sed -n '1000,2000p' file.log` daje natychmiast odpowiedź i działa na zdalnym serwerze bez dodatkowych narzędzi.
- Suma kolumny z raportu. Księgowa przysłała CSV faktur. Chcesz sumę. `awk -F',' '{ sum += $5 } END { print sum }' invoices.csv` dodaje kolumnę 5 ze wszystkich wierszy w milisekundach.
- Zmiana nazw plików w folderze. Masz setki plików typu `IMG_001.jpg` i chcesz, żeby były z małych liter i z datą. Pętla z `sed` budującym każdą nową nazwę zmienia je bez jednej linii kodu: czysty shell glue.