GNU/Linux >> Znalost Linux >  >> Linux

Tisknout čáry mezi (a vyjma) dvěma vzory?

Chystám se odeslat formulář pomocí cURL, kde část obsahu pochází z jiného souboru, vybraného pomocí sed

Pokud param1 je vzor pro shodu řádků z jiného souboru pomocí sed , níže uvedený příkaz bude fungovat dobře:

curl -d param1="$(sed -n '/matchpattern/p' file.txt)" -d param2=value2 http://example.com/submit

Nyní přejděte k problému. Chci zobrazit pouze text mezi 2 shodnými vzory s výjimkou samotného shodného vzoru.

Řekněme file.txt obsahuje:

Bla bla bla
firstmatch
It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.
secondmatch
The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English.

V současné době je spousta „shodujících se vzorů mezi 2“ sed příkaz neodstraní firstmatch a secondmatch .

Chci, aby výsledek byl:

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.

Přijatá odpověď:

Zde je jeden způsob, jak to můžete udělat:

sed '1,/firstmatch/d;/secondmatch/,$d' 

Vysvětleno:Od prvního řádku po řádek odpovídající první shodě , smazat. Z řádku odpovídající secondmatch do posledního řádku smazat.


Linux
  1. Bezpečně přenášejte soubory a složky mezi počítači pomocí Croc

  2. Jak přenášet soubory mezi servery v Linuxu pomocí SCP a FTP

  3. Jak vybrat první výskyt mezi dvěma vzory, které je obsahují?

  1. Tisknout odpovídající čáru a N-tou čáru ze shodné čáry?

  2. Jak vytisknout řádky číslo 15 a 25 z každých 50 řádků?

  3. Společné řádky mezi dvěma soubory?

  1. Extrahovat text mezi dva konkrétní řádky?

  2. Jak mohu přimět grep, aby vytiskl řádky pod a nad každým odpovídajícím řádkem?

  3. Jaký je rozdíl mezi použitím `sh` a `source`?