Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Zamiana treści w wielu plikach  (Przeczytany 1218 razy)

Offline cent4

  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
Zamiana treści w wielu plikach
« dnia: 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?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Zamiana treści w wielu plikach
« Odpowiedź #1 dnia: 2022-03-04, 22:29:38 »
Program sed (grzebanie w plikach) plus program find (iteracja po kolejnych plikach)
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline cent4

  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
Odp: Zamiana treści w wielu plikach
« Odpowiedź #2 dnia: 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?

Offline marcin'82

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 402
    • Zobacz profil
Odp: Zamiana treści w wielu plikach
« Odpowiedź #3 dnia: 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ł.
« Ostatnia zmiana: 2022-03-05, 11:19:07 wysłana przez marcin'82 »
marcin82

Offline cent4

  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
Odp: Zamiana treści w wielu plikach
« Odpowiedź #4 dnia: 2022-03-05, 12:01:04 »
find /ścieżka/ -type f -exec sed '/słowo do usunięcia/d' {} +
Nie działa

Offline marcin'82

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 402
    • Zobacz profil
Odp: Zamiana treści w wielu plikach
« Odpowiedź #5 dnia: 2022-03-05, 12:03:26 »
Zadzała z falgą -i, ale najpierw przetestuj.

find /ścieżka -type f -exec sed -i [wyrażenie] {} +
marcin82

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Zamiana treści w wielu plikach
« Odpowiedź #6 dnia: 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
« Ostatnia zmiana: 2022-03-05, 13:45:56 wysłana przez Paweł Kraszewski »
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline cent4

  • Nowy na forum
  • *
  • Wiadomości: 6
    • Zobacz profil
Odp: Zamiana treści w wielu plikach
« Odpowiedź #7 dnia: 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