Quiero eliminar todas las líneas vacías de un archivo. Incluso si la línea contiene espacios o pestañas, también debe eliminarse.
fuente
Quiero eliminar todas las líneas vacías de un archivo. Incluso si la línea contiene espacios o pestañas, también debe eliminarse.
Solo greppara no espacios en blanco:
grep '[^[:blank:]]' < file.in > file.out
[:blank:], dentro de los rangos de caracteres ( [...]), se llama una clase de caracteres POSIX. Hay algunos como [:alpha:], [:digit:]... [:blank:]coincide con el espacio en blanco horizontal (en la configuración regional POSIX, eso es espacio y pestaña, pero en otras configuraciones regionales podría haber más, como todos los caracteres de espaciado horizontal Unicode en configuraciones regionales UTF8) mientras [[:space:]]coincide con el blanco horizontal y vertical caracteres de espacio (igual que [:blank:]más cosas como tabulación vertical, avance de formulario ...).
grep '[:blank:]'
Volvería las líneas que contienen cualquiera de los caracteres, :, b, l, a, no k. Las clases de caracteres solo se reconocen dentro [...]y ^dentro [...]del conjunto. Entonces [^[:blank:]]significa cualquier personaje menos los en blanco.
$fin de línea?[^[:blank:]]$solo coincidiría con las líneas que terminan en un espacio en blanco. Queremos líneas que contengan un espacio en blanco en cualquier lugargrep -E '\S'que no funcionaría?Aquí hay una
awksolución:Con
awk,NFsolo se establece en líneas no en blanco. Cuando esta condición coincide, laawkacción predeterminada queprintse imprimirá toda la línea.fuente
Qué tal si:
o
es decir
Para cada línea, sustituya:
^")[[:blank:]]") cero o más veces ("*")$")Más información sobre :: blank :: y otros caracteres especiales en http://www.zytrax.com/tech/web/regex.htm#special
fuente
[[:space:]]Incluye pestañas. Si no fuera así, su expresión regular fallaría si un espacio siguiera a una pestaña.wctype(3)yisalpha(3)describen con qué coincidirán las clases de caracteres.Puede usar el
sedcomando para eliminar líneas en blanco:Este comando elimina todas las líneas vacías del archivo "en"
fuente
Parece que encontré uno no tan rápido, pero divertido al fin:
| xargs -L1fuente
Intenta ex -way:
Para varios archivos (editar en el lugar):
Nota: El
:bufdocomando no es POSIX .Sin modificar el archivo (solo imprima en la salida estándar):
fuente
Use el siguiente comando:
que elimina todas las líneas, incluidos los espacios o las pestañas.
De lo contrario, la eliminación no incluye líneas con espacios / tabulaciones, use:
Por ejemplo:
Ver también:
sed: Eliminar líneas vacías usando sedawk: Eliminar líneas en blanco usando awkfuente