FILE
:
hello
world
foo
bar
¿Cómo puedo eliminar todas las líneas nuevas vacías en esto FILE
?
Salida de comando:
FILE
:
hello
world
foo
bar
FILE
:
hello
world
foo
bar
¿Cómo puedo eliminar todas las líneas nuevas vacías en esto FILE
?
Salida de comando:
FILE
:
hello
world
foo
bar
Respuestas:
grep . FILE
(Y si realmente quiere hacerlo en sed, entonces: sed -e /^$/d FILE
)
(Y si realmente quiere hacerlo en AWK, entonces: awk /./ FILE
)
sed -ne/./p
también funciona y awk /./
es más corto (la acción es {print}
si no se especifica). @ ghostdog74: grep '[^[:space:]]'
entonces.
.
es una expresión regular que coincide con cualquier carácter excepto con la nueva línea.
grep . FILE
funciona con el ejemplo dado, pero no necesariamente cuando el archivo puede tener bytes que no forman parte del juego de caracteres. Por ejemplo, con GNU grep 2.20, printf "\x80\n" | grep .
no genera nada.
Intente lo siguiente:
grep -v -e '^$'
grep -v -e '^$'
siempre funciona, que no es el caso de grep .
. Por ejemplo, con GNU grep 2.20, printf "\x80\n" | grep .
no genera nada, mientras que printf "\x80\n" | grep -v '^$'
genera la línea no vacía.
with awk, just check for number of fields. no need regex
$ more file
hello
world
foo
bar
$ awk 'NF' file
hello
world
foo
bar
awk1line.txt
- por otra parte, también lo son la mayoría de los trucos awk :)
Aquí hay una solución que elimina todas las líneas que están en blanco o contienen solo caracteres de espacio:
grep -v '^[[:space:]]*$' foo.txt
Prueba esto: sed -i '/^[ \t]*$/d' file-name
Eliminará todas las líneas en blanco que tengan un no. de espacios en blanco (espacios o tabulaciones) es decir (0 o más) en el archivo.
Nota: hay un 'espacio' seguido de '\ t' dentro del corchete.
El modificador -i
obligará a volver a escribir el contenido actualizado en el archivo. Sin esta bandera, puede ver que las líneas vacías se eliminaron en la pantalla, pero el archivo real no se verá afectado.
grep '^..' my_file
ejemplo
THIS
IS
THE
FILE
EOF_MYFILE
da como salida solo líneas con al menos 2 caracteres.
THIS
IS
THE
FILE
EOF_MYFILE
Ver también los resultados con grep '^' my_file
salidas
THIS
IS
THE
FILE
EOF_MYFILE
y tambien con grep '^.' my_file
salidas
THIS
IS
THE
FILE
EOF_MYFILE
Si eliminar líneas vacías significa que las líneas incluyen espacios, use:
grep '\S' FILE
Por ejemplo:
$ printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$ cat -v FILE
line1
line2
line3
line4
$ grep '\S' FILE
line1
line2
line3
line4
$ grep . FILE
line1
line2
line3
line4
Ver también:
Perl puede ser excesivo, pero funciona igual de bien.
Elimina todas las líneas que están completamente en blanco:
perl -ne 'print if /./' file
Elimina todas las líneas que están completamente en blanco o solo contienen espacios en blanco:
perl -ne 'print if ! /^\s*$/' file
Variación que edita el original y crea un archivo .bak:
perl -i.bak -ne 'print if ! /^\s*$/' file
Si desea saber cuál es el total de líneas de código en su proyecto Xcode y no está interesado en enumerar el recuento de cada archivo rápido, esto le dará la respuesta. Elimina las líneas sin código y elimina las líneas que tienen el prefijo del comentario.//
Ejecútelo en el nivel raíz de su proyecto Xcode.
find . \( -iname \*.swift \) -exec grep -v '^[[:space:]]*$' \+ | grep -v -e '//' | wc -l
Si tiene bloques de comentarios en su código que comienzan /*
y terminan con */
tales como:
/*
This is an comment block
*/
entonces estos se incluirán en el recuento. (Demasiado duro).
Respuesta más simple -----------------------------------------
[root@node1 ~]# cat /etc/sudoers | grep -v -e ^# -e ^$
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
[root@node1 ~]#