Compter le nombre de caractère d'une ligne d'un fichier - Shell/Batch - Programmation
Marsh Posté le 01-03-2006 à 19:07:33
lapartdombre a écrit : Bonjour je cherche à savoir si chaque ligne d'un fichier respecte bien un nombre de caractère.
|
Après "-F" il faut mettre un séparateur de champs si ce séparateur n'est pas espace ou tabulation => "awk -F: '{...}' /etc/passwd" par exemple. Si ton fichier est séparé par des espaces ou des tabulations (comme dans 98% des fichiers textes), tu ne mets pas "-F"
Sinon, la ligne entière est symbolisée par "$0" et non "$1" !!!
Enfin t'as une aide irremplaçable: le man => man awk !!!
Marsh Posté le 02-03-2006 à 01:32:51
Dans beaucoup d'implementations, awk ne supporte que des lignes de longueur limitee. Donc verifier la taille des lignes avec awk, ce n'est pas forcement une bonne idee.
Marsh Posté le 02-03-2006 à 15:31:13
matafan a écrit : Dans beaucoup d'implementations, awk ne supporte que des lignes de longueur limitee. Donc verifier la taille des lignes avec awk, ce n'est pas forcement une bonne idee. |
Tiens ? Je savais pas. Boaf, on n'a qu'à faire ça en shell...
#!/bin/sh |
Marsh Posté le 03-03-2006 à 00:12:17
Tiens je viens de tester, et la limitation de awk a ete levee sous AIX 5.3. En 5.2 une ligne est limitee a 10239 caracteres.
Sinon en shell, ${#ligne} est la longueur de $ligne. Pas besoin de expr et de regexp.
Marsh Posté le 03-03-2006 à 01:00:09
matafan a écrit : Sinon en |
En Bourne Again ou en Korn, pas en Bourne. Si tu es sous Linux, ok. Mais si tu es sous AIX...
Le script que j'ai écrit (accessoirement sans "regexp" ) est compatible 100% Bourne Shell...
Marsh Posté le 03-03-2006 à 07:40:37
Le shell par defaut sous AIX est ksh. Je pense (en fait j'en suis sûr) que ${#} marche sur tous les shells POSIX. Et si '.*' n'est pas une regexp, tu appelles ça comment ?
Marsh Posté le 05-03-2006 à 12:54:07
matafan a écrit : Le shell par defaut sous AIX est ksh. Je pense (en fait j'en suis sûr) que ${#} marche sur tous les shells POSIX. |
J'ai jamais vérifié. Mais ça ne fonctionne pas en pur Bourne Shell. Mais évidemment la compatibilité descendante n'est pas forcément une obligation pour le script...
matafan a écrit : Et si '.*' n'est pas une regexp, tu appelles ça comment ? |
Ben pour moi c'est un argument de "expr"...
Bon, allez. Pour te faire plaisir, pas de "regexp" (et toujours 100% compatible Bourne Shell)
#!/bin/sh |
Marsh Posté le 01-03-2006 à 14:07:03
Bonjour je cherche à savoir si chaque ligne d'un fichier respecte bien un nombre de caractère.
J'ai essayé avec awk mais je n'arrive pas à le faire fonctionner.
Il me renvoit comme erreur :
Est ce que quelqu'un connait un moyen de le faire