Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/01/2012, à 23:25

beryluser

Supprimer lignes avec < caractères

Bonjour,

Je souhaiterais savoir si quelqu'un sait comment supprimer toutes les lignes qui ne comporte pas au moins 4 caractères sur un fichier spécifique :

J'ai un fichier txt avec des milliers de lignes lignes à exploiter, exemple :

11111111
11
11111
111111
11111
111111
1111111
11111
1111111
1111
11111
11

Les lignes avec 1, 2, ou 3 caractères me sont inutiles, j'ai cherché avec grep, cat, fgrep, sed etc. mais je ne trouve pas ma solution :X

Auriez vous une idée ?

Pour ceux que ca peut aider :
Supprimer toutes les lignes vides : sed '/^$/d' test >test.tmp
Supprimer tous les doublons : cat fichier | uniq

Merciii !

Dernière modification par beryluser (Le 26/01/2012, à 23:27)

Hors ligne

#2 Le 26/01/2012, à 23:49

sputnick

Re : Supprimer lignes avec < caractères

Salut,

dans l'ordre de pertinence ou de longueur :


grep '.\{4,\}' file
grep -E '.{4,}' file
sed -n '/.\{4,\}/p' file
awk 'length($0) > 4' file
perl -ane 'length($F[0]) > 4 && print' file
while read a; do ((${#a} > 4)) && echo $a; done < file

++

Dernière modification par sputnick (Le 26/01/2012, à 23:55)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#3 Le 27/01/2012, à 00:12

beryluser

Re : Supprimer lignes avec < caractères

sputnick a écrit :

Salut,

dans l'ordre de pertinence ou de longueur :


grep '.\{4,\}' file
grep -E '.{4,}' file
sed -n '/.\{4,\}/p' file
awk 'length($0) > 4' file
perl -ane 'length($F[0]) > 4 && print' file
while read a; do ((${#a} > 4)) && echo $a; done < file

++

Super ! Bravo !! Je viens de tester la première qui marche très bien, idem pour awk qui fonctionne à merveille !

Et dans la même logique si je souhaite supprimer les lignes de plus de 20 caractères avec grep je fais un truc du genre grep '.\{\,20}' fichier ?

Hors ligne

#4 Le 27/01/2012, à 00:18

sputnick

Re : Supprimer lignes avec < caractères

beryluser a écrit :

Et dans la même logique si je souhaite supprimer les lignes de plus de 20 caractères avec grep je fais un truc du genre grep '.\{\,20}' fichier ?

grep -v '.\{21,\}' file

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#5 Le 27/01/2012, à 03:50

aduxas

Re : Supprimer lignes avec < caractères

Le classement du plus rapide au plus lent, pour un fichier de 400000 lignes:

1. 0.343s grep -E
2. 0.387s grep
3. 0.409s awk
4. 0.448s sed
5. 0.831s perl
6. 17.0s pure bash

Dernière modification par aduxas (Le 27/01/2012, à 03:52)

Hors ligne