Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> użycie 'sed' do usunięcia wszystkich linii pomiędzy liniamii zawierajacymi regex a i b
maraska
post 2.12.2016, 12:57:57
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Witam, próbuję usunąć w plikach przy użyciu sed linie zawarte pomiędzy liniami zawierającymi dwa wyrażenia regularne razem z tymi liniami z wyrażeniami, czyli

  1. sed '/PATTERN-1/,/PATTERN-2/d' input.txt


Jak dam print, czyli:
  1. sed '/PATTERN-1/,/PATTERN-2/p' input.txt

to pokazuje te linie o które mi chodzi
ale jak dam "d" czyli usuń jak w przykładzie powyżej to nie usuwa.
Czemu?

konkretnie zapis wygląda tak:
  1. sed '/\/\/###=CACHE START=###/,/\/\/###=CACHE END=###/d' input.php
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Pyton_000
post 2.12.2016, 13:16:22
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Kod
... input.php >  output.php


Ten post edytował Pyton_000 2.12.2016, 13:16:43
Go to the top of the page
+Quote Post
maraska
post 2.12.2016, 13:22:55
Post #3





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 2.12.2016, 14:16:22 ) *
Kod
... input.php >  output.php


Dzięki za czas ale ma usunąć w tym samym pliku czyli input.php a nie zapisywać w nowym.
Go to the top of the page
+Quote Post
Pyton_000
post 2.12.2016, 13:27:50
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


sed -i
Go to the top of the page
+Quote Post
maraska
post 2.12.2016, 14:15:32
Post #5





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 2.12.2016, 14:27:50 ) *
sed -i


OK a jakby komuś było potrzebne usuwanie wielu linii gdy wiemy jaki ciąg ma zawierać pierwsza usuwana linia i ostatnia usuwana linia
i wiemy, że żadna inna linia takiego ciągu nie zawiera
i chcemy to zrobić na raz w wielu plikach w całych katalogach i ich podkatalogach
to robimy to tak:

  1. grep -rl 'SZUKANA_FRAZA' /KATALOG_GDZIE_SZUKAMY | xargs sed -i '/FRAZA1/,/FRAZA2/d'


a jeżeli FRAZA1 albo 2 zawiera znaki specjalne jak "/", "$" itp. to trzeba taki znak poprzedzić "\"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 16:20