J'ai trouvé une question sur la façon de supprimer des lignes plus longues que 2048 caractères:
Comment supprimer une ligne si plus longue que XY?
Q: Mais comment supprimer des lignes plus courtes que 4 caractères? Supprimez donc les lignes qui ont 1 ou 2 ou 3 longueurs dans un fichier.
MISE À JOUR: Merci pour les nombreuses BONNES réponses, mais je ne peux en marquer qu'une comme OK
la source
sed '/^.\{,3\}$/d'
ne fonctionne pas avec BSD sed:sed: 1: "/^.\{,3\}$/d": RE error: invalid repetition count(s)
. La version sed -r est syntaxiquement valide, mais ne supprimera pas les lignes.Quelques variantes supplémentaires:
ou
ou
ou
ou
ou GNU awk:
la source
Voici la solution Vim utilisant le mode Ex de Vim et la
global
commande.Ceci est très similaire à l'utilisation
sed
, sauf que certains caractères spéciaux ('{', '}') doivent être échappés.En utilisant le mode Very Magic Regex de Vim (\ v), cet échappement peut être évité.
Voir aussi: aidez la magie
Parfois aussi, il est utile de faire le contraire avec
vglobal
.supprimerait tout sauf les lignes jusqu'à 3 caractères.
la source
pour supprimer directement les lignes que vous pourriez:
Ou BRE:
Si une ligne ne contient pas 4 caractères ou plus, elle est supprimée.
Faire ce qui précède dans le sous-shell de substitution de commandes garantira que
grep
obtient un descripteur de lecture dessus avant que cat ne commence à y écrire, mais<<HEREDOC
cela garantira également que le résultat reste diffusé et ne provoque pas d'erreurs de longueur d'argument.la source
la source
Vous pouvez utiliser
grep
:Si vous comptez les espaces de début dans la longueur de ligne:
Si vous ne comptez pas les espaces de début dans la longueur de ligne:
la source