Premier n° de ligne d'un fichier avec nb de colonnes en bash

CB8 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Nouveau membre de CCM, je vous soumets cette question qui concerne une programmation en bash linux.

Je cherche à identifier la première ligne d'un fichier ASCII dont le nombre de caractères dépasse une valeur donnée (par exemple 100). La raison est que je veux ignorer les premières lignes qui contiennent des informations qui constituent l'en-tête et ne me sont pas utiles, sachant que le nombre de lignes de l'entête est variable d'un fichier à l'autre.

Pour détecter la première ligne que je dois traiter, je sais seulement que son nombre de caractères est supérieur à celui des lignes de l'entête.

Une méthode triviale, mais peu élégante consiste à programmer une boucle du type:

max_colonnes=100
num_ligne=0
while read ligne
do
   num_ligne=$((num_ligne + 1));
   if [ ${#ligne} -gt $max_colonnes ]
   then
        break
   fi
done < $nom_fichier


Pourrait-on simplifier et compacter une telle opération avec une série de commandes bash en pipe?

Merci de votre aide :-)
A voir également:

7 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
var=$(awk 'length()>100 {print NR; exit}' fichier)
1
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
hello
pour afficher les lignes de plus de 100 car. on peut faire
awk 'length()>100' fichier
0
CB8 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Salut, merci de ta réponse.

Je ne veux pas afficher les lignes de plus de 100 caractères, je cherche juste à connaître le n° de ligne de la première, sans l'afficher.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
affiche le No de la première ligne de plus de 100 car. et termine
awk 'length()>100 {print NR; exit}' fichier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CB8 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Et comment verses-tu NR dans une variable bash?
0
CB8 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
ça marche, merci :-)
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
et pour mettre la longueur dans une variable
max=100
var=$(awk -v max=$max 'length()>max {print NR; exit}' fichier)
0