Nowe posty

xx Warning (4)
2023-03-19, 14:06:50
xx Problem z instalacją z pendrive (18)
2023-03-19, 03:31:33
xx Fizyczny przycisk POWER nie wyłącza komputera (5)
2023-03-17, 19:09:16
xx Adapter Bluetooth USB a LINUX MINT (2)
2023-03-15, 23:39:28
xx Sprzet z Linuxem (3)
2023-03-09, 17:12:28
xx Potrzebna pomoc w pracy domowej (10)
2023-03-09, 16:11:41
clip Bład aktualizacji w peppermint os (4)
2023-03-08, 10:19:05
xx Ekran logowania (11)
2023-03-07, 23:46:22
xx Lenovo Legion 5 i Ubuntu (6)
2023-03-07, 12:34:30
xx instalacja pycharm comunity -komunikaty (4)
2023-03-07, 09:24:13

Autor Wątek: Zamiana treści w wielu plikach  (Przeczytany 683 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: 2932
  • 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: 394
    • 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: 394
    • 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: 2932
  • 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