GNU/Linux >> Znalost Linux >  >> Linux

Najít číslo řádku, které obsahuje vzor, ​​pomocí vlastního oddělovače regulárního výrazu?

Jako v příkladu se snažím získat čísla řádků, které obsahují vzor. Můj vzor obsahuje lomítka, takže jsem chtěl přidat vlastní oddělovač.

Tento jednoduchý funguje:

sed -n '/file/=' temp.txt

Funguje také použití oddělovače pro nahrazení řetězce:

sed 's|file|gile|' temp.txt

ale když chci přidat oddělovač do prvního příkladu, nedělá to:

sed -n '|file /etc|=' temp.txt

Vím, že mohu uniknout lomítkům, ale raději bych přidal vlastní oddělovač. Máte nápad, jak opravit můj příkaz?

Přijatá odpověď:

Stéphane vám dal sed řešení:

sed -n  '|file /etc|=' file 

Pokud jste ochotni používat jiné nástroje, můžete to udělat také

grep -n 'file /etc' file

To také vytiskne samotný řádek, abyste získali pouze číslo řádku, zkuste:

grep -n 'file /etc' file | cut -d: -f 1

Nebo můžete použít perl :

perl -lne 'm|file /etc| && print $.' file 

Nebo awk :

awk '$0 ~ "file /etc" {print NR}'

Linux
  1. Manipulace s textem na příkazovém řádku pomocí sed

  2. Vytisknout předchozí řádek po shodě vzoru pomocí Sed?

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

  1. Najděte verzi WordPress z příkazového řádku

  2. Koncept 'Hold space' a 'Pattern space' v sed

  3. Použití sed k rozdělení řetězce s oddělovačem

  1. Jak vložím text do 1. řádku souboru pomocí sed?

  2. Proč sed ve výchozím nastavení nepoužívá rozšířený režim regulárních výrazů?

  3. Jak zjistím číslo řádku v Bash, když došlo k chybě?