OVH Cloud OVH Cloud

Tri d'un fichier par taille de ligne

3 réponses
Avatar
Arnaud Launay
Salut,

Malgré une recherche sur google, je ne suis pas fichu de trouver
un moyen simple de trier un fichier par la taille des lignes, par ex:

aaaaaaa
bbbbbbbbbbbb
cccc
ddddddddddddddd
eeeeeeeeee

deviendrait
cccc
aaaaaaa
eeeeeeeeee
bbbbbbbbbbbb
ddddddddddddddd


(bon, l'idée, c'est que derrière, j'ai un fichu oracle avec un
sqlplus qui me balance du SP2-0027: Input is too long (> 2499
characters) - line ignored , et je n'arrive pas à lui dire de les
accepter quand même, donc je cherche quelles sont les lignes
casse-burnes...)

Arnaud.
--
Perso: http://launay.org/blog/
Consulting: http://www.cusae.com/
Hébergement: http://www.nocworld.com/

3 réponses

Avatar
Laurent Wacrenier
Arnaud Launay écrit:
Malgré une recherche sur google, je ne suis pas fichu de trouver
un moyen simple de trier un fichier par la taille des lignes, par ex:

aaaaaaa
bbbbbbbbbbbb
cccc
ddddddddddddddd
eeeeeeeeee

deviendrait
cccc
aaaaaaa
eeeeeeeeee
bbbbbbbbbbbb
ddddddddddddddd


awk '{ print length ":" $0}' | sort -n | sed 's/^[^:]*://'

(bon, l'idée, c'est que derrière, j'ai un fichu oracle avec un
sqlplus qui me balance du SP2-0027: Input is too long (> 2499
characters) - line ignored , et je n'arrive pas à lui dire de les
accepter quand même, donc je cherche quelles sont les lignes
casse-burnes...)


awk 'length > 2499'

Attention, la taille de ligne d'un fichier texte peut être
limitée sur certaines implémentations (minimax 2000 octets).

Avatar
Stéphane Goujet
un moyen simple de trier un fichier par la taille des lignes, par ex:
awk '{ print length ":" $0}' | sort -n | sed 's/^[^:]*://'



Bien pensé (ou bien retenu) !

Chez moi, c'est un poil plus rapide avec

cut -d: -f2-

à la place de sed ...

A+,
Stéphane.


Avatar
Jacques L'helgoualc'h
Le 16-03-2005, Arnaud Launay a écrit :
Salut,


bonjour,

Malgré une recherche sur google, je ne suis pas fichu de trouver
un moyen simple de trier un fichier par la taille des lignes, par ex:
[...]


$ <fichier awk -v MIN '
length()>MIN{printf "%7dt%sn", length(), $0}
' | sort -n
15 ddddddddddddddd

(bon, l'idée, c'est que derrière, j'ai un fichu oracle avec un
sqlplus qui me balance du SP2-0027: Input is too long (> 2499
characters) - line ignored , et je n'arrive pas à lui dire de les
accepter quand même, donc je cherche quelles sont les lignes
casse-burnes...)


Il y a aussi

grep -E '.{2500}' <fichier

qui ne trie pas...
--
Jacques L'helgoualc'h