#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
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
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