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 grep
para 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
, n
o 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
awk
solución:Con
awk
,NF
solo se establece en líneas no en blanco. Cuando esta condición coincide, laawk
acción predeterminada queprint
se 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
sed
comando 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 -L1
fuente
Intenta ex -way:
Para varios archivos (editar en el lugar):
Nota: El
:bufdo
comando 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