Nowe posty

xx Otoczenie najkrótszej frazy (2)
2022-09-25, 12:18:46
xx Skrypt do otwarcia i zamknięcia plików (2)
2022-09-19, 21:18:41
xx potrzebuje by ktoś mi wytłumaczył jedną żecz (4)
2022-09-16, 23:14:22
clip Zmiana ustawień punktu montowania (2)
2022-09-07, 23:20:08
xx Czarny ekran na start - linux mint (2)
2022-09-07, 14:46:31
xx Przydatne Linki (12)
2022-09-07, 14:33:34
xx Czy jest to potrzebne w domu ? (1)
2022-09-07, 08:26:40
xx System pakietów jest uszkodzony (Linux Ubuntu 20.04 LTS) (1)
2022-09-06, 16:50:43
xx Lupa. (5)
2022-09-04, 00:47:38
xx problem z wyburzaniem dell inspirion 15 3552 (1)
2022-09-03, 19:47:29

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

Offline cent4

  • Nowy na forum
  • *
  • Wiadomości: 5
    • 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: 2875
  • 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: 5
    • 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: 383
    • 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: 5
    • 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: 383
    • 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: 2875
  • 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: 5
    • 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