Encontré una pregunta sobre cómo eliminar líneas más largas que 2048 caracteres:
¿Cómo eliminar la línea si es más larga que XY?
P: ¿Pero cómo puedo eliminar líneas más cortas que 4 caracteres? Entonces, elimine las líneas que tienen 1 o 2 o 3 de longitud en un archivo.
ACTUALIZACIÓN: Gracias por las muchas BUENAS respuestas, pero solo puedo marcar una como OK
text-processing
sed
evachristina
fuente
fuente
sed '/^.\{,3\}$/d'
no funciona con BSD sed:sed: 1: "/^.\{,3\}$/d": RE error: invalid repetition count(s)
. La versión sed -r es sintácticamente válida, pero no eliminará líneas.Algunas variaciones más:
o
o
o
o
o GNU awk:
fuente
Aquí está la solución de Vim usando el modo Ex de Vim y el
global
comando.Esto es muy similar al uso
sed
, solo que algunos caracteres especiales ('{', '}') deben escaparse.Usando el modo Very Magic Regex de Vim (\ v), se puede evitar este escape.
Ver también: ayuda mágica
También a veces es útil hacer lo contrario con
vglobal
.eliminaría todo menos las líneas hasta 3 caracteres.
fuente
para eliminar directamente las líneas que podrías:
O BRE:
Si una línea no contiene 4 o más caracteres, se elimina.
Hacer lo anterior en la subshell de sustitución de comandos asegurará que se
grep
obtenga un descriptor de lectura antes de que cat comience a escribir en él, pero<<HEREDOC
también se asegurará de que el resultado permanezca transmitido y no cause errores de longitud de argumento.fuente
fuente
Puedes usar
grep
:Si cuenta espacios iniciales en la longitud de la línea:
Si no cuenta los espacios iniciales en la longitud de línea:
fuente