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/./ptambié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 . FILEfunciona 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 -iobligará 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_filesalidas
THIS
IS
THE
FILE
EOF_MYFILE
y tambien con grep '^.' my_filesalidas
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 ~]#