Forum Linux.pl

System => Administracja => Wątek zaczęty przez: cent4 w 2022-03-04, 19:22:06

Tytuł: Zamiana treści w wielu plikach
Wiadomość wysłana przez: cent4 w 2022-03-04, 19:22:06
Mam folder z ok 5GB plików (jest ich tam ponad 3 000 000) wszystko to pliki tekstowe.
Jak usunąć z tych plików całe linie, które na swoim początku zawierają określony taki sam ciąg znaków?
Tytuł: Odp: Zamiana treści w wielu plikach
Wiadomość wysłana przez: Paweł Kraszewski w 2022-03-04, 22:29:38
Program sed (grzebanie w plikach) plus program find (iteracja po kolejnych plikach)
Tytuł: Odp: Zamiana treści w wielu plikach
Wiadomość wysłana przez: cent4 w 2022-03-05, 11:10:44
sed '/słowo do skasowania/d' /path/to/folder
Ale nie kasuje treści w podkatalogach tylko w bieżącym folderze - jak zrobić, żeby kasował również w podfolderach?
Tytuł: Odp: Zamiana treści w wielu plikach
Wiadomość wysłana przez: marcin'82 w 2022-03-05, 11:16:18
Użyj find:
find /ścieżka -type f -exec sed [wyrażenie] {} +

Skopiuj na próbę w inne miejsce folder z kilkoma podfolderami i posrawdzaj, żebyś kuku w razie czego na całej bazie nie zrobił.
Tytuł: Odp: Zamiana treści w wielu plikach
Wiadomość wysłana przez: cent4 w 2022-03-05, 12:01:04
find /ścieżka/ -type f -exec sed '/słowo do usunięcia/d' {} +
Nie działa
Tytuł: Odp: Zamiana treści w wielu plikach
Wiadomość wysłana przez: marcin'82 w 2022-03-05, 12:03:26
Zadzała z falgą -i, ale najpierw przetestuj.

find /ścieżka -type f -exec sed -i [wyrażenie] {} +
Tytuł: Odp: Zamiana treści w wielu plikach
Wiadomość wysłana przez: Paweł Kraszewski w 2022-03-05, 13:01:12
I uwaga: /słowo/d usunie linię, gdy słowo jest gdziekolwiek w tej linii. Jeżeli chcesz na początku, to wyrażenie brzmi /^słowo/d. Doatkowo, jeżeli nie chesz usunąć linii zaczynającej się od słowotok, to wyrażenie brzmi /^słowo\b/d
Tytuł: Odp: Zamiana treści w wielu plikach
Wiadomość wysłana przez: cent4 w 2022-03-05, 18:23:00
Użyj find:
find /ścieżka -type f -exec sed [wyrażenie] {} +

Skopiuj na próbę w inne miejsce folder z kilkoma podfolderami i posrawdzaj, żebyś kuku w razie czego na całej bazie nie zrobił.


Cudownie - Twoja podpowiedź w punkt - to działa - dziękuję serdecznie