Eu quero grep smb.conf
e ver apenas as linhas que não são comentadas.
Eu quero grep smb.conf
e ver apenas as linhas que não são comentadas.
Respostas:
grep "^[^#;]" smb.conf
O primeiro ^
se refere ao início da linha, portanto, as linhas com comentários iniciados após o primeiro caractere não serão excluídas. [^#;]
significa qualquer caractere que não seja #
ou ;
.
Em outras palavras, ele relata linhas que começam com qualquer caractere que não seja #
e ;
. Não é o mesmo que relatar as linhas que não começam #
e ;
(para as quais você usaria grep -v '^[#;]'
), pois também exclui as linhas vazias , mas provavelmente é preferível nesse caso, pois duvido que você se importe com as linhas vazias.
Se você quiser ignorar os principais caracteres em branco, poderá alterá-lo para:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
ou
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
Ou
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
Mas de qualquer maneira Obrigado
cat ...|
sintaxe !. .2 Para chicotear linhas vazias E linhas contendo apenas espaço, talvez com os comentários que U possa usar:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
implie a execução de dois binários através de um fifo , enquanto grep "blah" <file
faz exatamente o mesmo e vincula file
naturalmente ao grep STDIN
. [bash] gato inútil é um assunto completo de pesquisa em qualquer mecanismo de pesquisa! -> blog.sanctum.geek.nz/useless-use-of-cat ... para amostra #
Solução Vim:
:v/^\s*[#\n]/p
Eu me deparei com essa pergunta ao tentar encontrar a solução vim.
*
para +
o seguinte:v/^\s+[#\n]/p
O canal para grep na resposta de oliver nadj pode ser eliminado por (assumindo o GNU grep
ou compatível):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
é isso que funciona para mim. ignore as linhas comentadas ou vazias, mesmo espaços em branco antes da marca de hash ou ponto-e-vírgula
Esses exemplos podem ser úteis para as pessoas.
[user@host tmp]$ cat whitespacetest
# Line 1 is a comment with hash symbol as first char
# Line 2 is a comment with hash symbol as second char
# Line 3 is a comment with hash symbol as third char
# Line 4 is a comment with tab first, then hash
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
O primeiro exemplo de grep exclui linhas que começam com qualquer quantidade de espaço em branco seguido por um símbolo de hash.
[user@host tmp]$ grep -v '^[[:space:]]*#' whitespacetest
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
O segundo exclui linhas que começam com qualquer quantidade de espaço em branco seguido por um símbolo de hash ou ponto e vírgula.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
Aqui eu tenho um melhor (assumindo GNU grep
ou compatível):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
exclua para as linhas que começam com #;/%<
colchetes e o segundo filtro após o tubo é \s*$
para linhas em branco.
<
ou /
usados para comentários? Conheço muitos formatos de arquivo conf, onde <
há tudo, menos um comentário. !
às vezes é usado como nos arquivos de recursos X.
grep -v '^$\|^\s*#' temp
Este é muito melhor, eu peguei em https://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-using-grep-sed
Pressupõe GNU grep
ou compatível.
;
um comentário que deve ser removido.
egrep -v "^#|^$" anyfile.txt
este comando é grep todas as informações no arquivo, excluindo comentários e linhas em branco.
;
Isso deve exibir o arquivo sem as linhas que começam com #
:
grep -v "^#" filename
;
.
testparm
faça isso melhor, pois também exibe os valores padrão.