GNU/Linux >> Znalost Linux >  >> Linux

Sed:Vytisknout pouze první výskyt shody vzoru?

Tato otázka zde již obsahuje odpovědi :Jak vybrat první výskyt mezi dvěma vzory, které je obsahují

(7 odpovědí)
Uzavřeno před 4 lety.

Několik otázek je podobných této, ale nenašel jsem řešení, které by fungovalo, když chci hledat vzor na několika řádcích. Následující

sed -n '/First string/,/Second string/ p' my.file

vytiskne vše výskyty shodného vzoru, ale chtěl bych pouze první výskyt. Používám GNU sed.

Přijatá odpověď:

Použijte q explicitně ukončit, když je dosaženo koncového vzoru.

V GNU sed:

$ cat foo
foo
START
bar
END
blah
START another

$ sed -n '/START/,/END/p; /END/q' foo
START
bar
END

awk možná by to usnadnilo neopakování koncového vzoru:

$ awk '/START/{p=1} p; /END/{exit}' foo
START
bar
END

Linux
  1. Filtr Rsync:Kopírování pouze jednoho vzoru?

  2. Shoda víceřádkového vzoru pomocí Sed, Awk nebo Grep?

  3. Zobrazit všechny soubory až do shody?

  1. Ponechat pouze první řádek z každé sekvence po sobě jdoucích řádků, které odpovídají vzoru?

  2. Příkaz pro tisk pouze posledních 3 znaků řetězce?

  3. Freebsd – Bsd Sed:Nahradit pouze N-tý výskyt vzoru?

  1. Najít pouze první výskyt pouze pomocí Grepu?

  2. Velké první písmeno slov pomocí SED

  3. grep odpovídá pouze řádkům v určeném rozsahu