Quiero grep smb.conf
y ver solo líneas que no están comentadas.
Quiero grep smb.conf
y ver solo líneas que no están comentadas.
Respuestas:
grep "^[^#;]" smb.conf
El primero se ^
refiere al comienzo de la línea, por lo que no se excluirán las líneas con comentarios que comiencen después del primer carácter. [^#;]
significa cualquier carácter que no sea #
o ;
.
En otras palabras, informa líneas que comienzan con cualquier carácter que no sea #
y ;
. No es lo mismo que informar las líneas que no comienzan #
y ;
(para las que usaría grep -v '^[#;]'
), ya que también excluye las líneas vacías , pero eso es probablemente preferible en este caso, ya que dudo que le interesen las líneas vacías.
Si desea ignorar los caracteres en blanco iniciales, puede cambiarlo a:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
o
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
O
awk '$1 ~ /^[^;#]/' smb.conf
cat /etc/samba/smb.conf | grep ^[^#\;]
Pero de todos modos, gracias
cat ...|
sintaxis !. .2 Para batir líneas vacías Y líneas que contienen solo espacio, tal vez con comentarios U podría usar esto:grep -v "^ *\(#.*\|\)$" < smb.conf
cat file | grep "blah"
implica ejecutar dos binarios a través de un quince , mientras que grep "blah" <file
hace exactamente lo mismo y se une file
naturalmente a grep's STDIN
. [bash] gato inútil es un tema de búsqueda con todas las funciones a través de cualquier motor de búsqueda! -> blog.sanctum.geek.nz/useless-use-of-cat ... para muestra
Solución Vim:
:v/^\s*[#\n]/p
Me encontré con esta pregunta al intentar encontrar la solución vim yo mismo.
*
para +
que así:v/^\s+[#\n]/p
La tubería para grep en la respuesta de oliver nadj puede eliminarse (suponiendo GNU grep
o compatible):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
Eso es lo que funciona para mí. ignore las líneas comentadas o vacías, incluso los espacios en blanco antes de la marca de punto o el punto y coma
Estos ejemplos pueden ser útiles para las personas.
[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]$
El primer ejemplo grep excluye líneas que comienzan con cualquier cantidad de espacio en blanco seguido de un símbolo 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]$
El segundo excluye las líneas que comienzan con cualquier cantidad de espacio en blanco seguido de un símbolo hash o punto y coma.
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
Aquí obtuve una mejor (suponiendo GNU grep
o compatible):
grep -v '^[#;/%<]\|^\s*$' anyfile.conf
excluya las líneas que comienzan con #;/%<
corchetes y el segundo filtro después de la tubería es \s*$
para líneas en blanco.
<
o se /
usan para comentarios? Conozco muchos formatos de archivos conf donde <
hay de todo menos un comentario. !
a veces se usa como en los archivos de recursos X.
grep -v '^$\|^\s*#' temp
Este es mucho mejor, lo obtuve de https://stackoverflow.com/questions/17392869/how-to-print-a-file-excluding-comments-and-blank-lines-using-grep-sed
Asume GNU grep
o compatible.
;
como un comentario que debe eliminarse.
egrep -v "^#|^$" anyfile.txt
Este comando es grep toda la información en el archivo, excepto los comentarios y las líneas en blanco.
;
Esto debería mostrar el archivo sin esas líneas que comienzan con #
:
grep -v "^#" filename
;
.
testparm
hacerlo mejor ya que también muestra valores predeterminados.