GNU/Linux >> Znalost Linux >  >> Linux

Jak Grep linky, které nezačínají "#" nebo ";"?

Chci grep smb.conf a zobrazit pouze řádky, které nejsou komentovány.

Přijatá odpověď:

grep "^[^#;]" smb.conf

První ^ odkazuje na začátek řádku, takže řádky s komentáři začínajícími za prvním znakem nebudou vyloučeny. [^#;] znamená jakýkoli znak, který není # nebo ; .

Jinými slovy, hlásí řádky, které začínají jakýmkoli jiným znakem než # a ; . Není to totéž jako nahlásit řádky, které nezačínají # a ; (pro který byste použili grep -v '^[#;]' ) tím, že také vylučuje prázdné řádky, ale to je v tomto případě pravděpodobně vhodnější, protože pochybuji, že vás zajímají prázdné řádky.

Pokud jste chtěli ignorovat úvodní prázdné znaky, můžete to změnit na:

grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf

nebo

grep -vxE '[[:blank:]]*([#;].*)?' smb.conf

Nebo

awk '$1 ~ /^[^;#]/' smb.conf

Linux
  1. Jak spustit Grep s více a vzory?

  2. Jak Gzip pouze v případě, že Thesqldump nedojde k chybě?

  3. Příkaz Rm ve skriptu Bash nefunguje s proměnnou?

  1. Linux – Ldd nenajde cestu, jak přidat?

  2. Jak používat Grep k hledání vzoru, který začíná spojovníkem (-)?

  3. Jak najít řádky obsahující řetězec v linuxu

  1. Jak prohledávat manuálové stránky Linuxu (např. pomocí grep)

  2. Jak se Linux vypořádává se skripty shellu?

  3. Vytiskněte čáry mezi počátečním a koncovým vzorem, ale pokud koncový vzor neexistuje, netiskněte