[sed] supprimer ligne de plus de n caractères

Bonjour!
Je n’arrive pas à m’en sortir avec sed.
Je voudrais supprimer les lignes d’un fichier si elles contiennent plus de n caractères, ou dans l’autre sens, si elles contiennent moins de m caractères.
Ça me prends un peu la tête là, donc je viens chercher votre aide :slightly_smiling: .

Merci d’avance!

edit anerie

je pensais à coupler sed avec wc mais

echo “aaaa” | wc -m
5

Il va falloir que je relise la doc

bjr

une doc pour faire avancer ton projet

pour wc si je crée un fichier vide avec touch wc me dit 0 caractère
Si je crée un fichier avec echo “” > aa alors wc me dit 1 caractère.

Pour ton problème utilise alors
aa="aaaaa"
echo ${#aa}

À coupler avec sed

Hello.

Essaye ça :

[quote=“test.txt”]123456789
12345678
1234567
123456
12345
1234
123
12
1[/quote]

moins de 5 caractères :

iman@debian:~$ grep -v -P '.{5,}' test.txt 1234 123 12 1

Et pour entre 5 et 6 caractères :

iman@debian:~$ grep -P '.{5,}' test.txt | grep -v -P '.{7,}' 123456 12345

pwet.fr/man/linux/commandes/grep
perldoc.perl.org/perlre.html#Regular-Expressions

@+…

Tu peux même faire entre 5 et 6 caractères, en un grep :

$ grep -P '^.{5,6}$' test.txt 
123456
12345

limax -> wc compte aussi le caractère « fin de ligne » :

$ echo "aaaa" | wc -m
5
$ echo -n "aaaa" | wc -m
4

Wouahou, vous êtes des champions, merci beaucoup! :smiley:

re …

[quote=“kna”]Tu peux même faire entre 5 et 6 caractères, en un grep :

$ grep -P '^.{5,6}$' test.txt 123456 12345
[/quote]
Bien vu! :023

Je l’ai cherché celui-là en plus mais j’ai pas pensé à délimiter la chaîne avec ^ et $ je faisais :

iman@debian:~$ grep -P '.{5,6}' test.txt 123456789 12345678 1234567 123456 12345

@+…