GNU/Linux >> Znalost Linux >  >> Linux

Jak vytisknout soubor a ignorovat řádky, které začínají „?“?

Dělám svn status --show-updates a pak chci buď

  • O1:
    ignorovat (nezobrazovat) řádky, které začínají ?
  • Q2:
    zobrazí pouze řádky, které začínají * Všimněte si, že před výskytem * je několik mezer. To znamená, že * není první znak na řádku.

Jak to mohu udělat?

Přijatá odpověď:

Tyto podmínky můžete vyjádřit pomocí regulárních výrazů a použít grep filtrovat výsledky na základě nich.

První je ^? . Karát je speciální znak, který představuje začátek řádku; takže výraz odpovídá začátku řádku, za kterým bezprostředně následuje ? .

Druhý je ^ *\* . * je speciální znak, který kvalifikuje předchozí znak – to znamená, že předchozí znak se může objevit nula nebo vícekrát. Od * je speciální znak, ten, který hledáte, musí být escapován, proto \* . Tento výraz tedy bude odpovídat začátku řádku, za kterým bude následovat nula nebo více mezer a za nimi hvězdička.

Pro první podmínku použijte -v možnost pro grep negovat výsledky.

Takže konečně,

svn status --show-updates | grep -v '^?'

nebo

svn status --show-updates | grep '^ *\*'

Regulární výrazy jsou velmi výkonné, takže je může používat mnoho unixových nástrojů. Velmi stojí za to se je naučit. Na regular-expressions.info je skvělý návod.


Linux
  1. Jak se popasovat s barevným výstupem

  2. Jak připojit výstup do souboru?

  3. Jak si vyžádám soubor, ale neuložím jej pomocí Wget?

  1. Jak přesměrovat výstup system() do souboru?

  2. Jak odstranit znak \r pomocí sed

  3. Jak podložit soubor pomocí FF pomocí dd?

  1. Jak zkrátit soubor podle řádků?

  2. iftop - jak vygenerovat textový soubor s jeho výstupem?

  3. Jak získat řádky, které obsahují řetězec v souboru?