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

Fermé
CB8 Messages postés 4 Date d'inscription lundi 31 janvier 2022 Statut Membre Dernière intervention 31 janvier 2022 - Modifié le 2 févr. 2022 à 12:07
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 1 févr. 2022 à 10:15
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
31 janv. 2022 à 17:49
var=$(awk 'length()>100 {print NR; exit}' fichier)
1
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
31 janv. 2022 à 16:25
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 lundi 31 janvier 2022 Statut Membre Dernière intervention 31 janvier 2022
31 janv. 2022 à 16:32
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
31 janv. 2022 à 16:51
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 lundi 31 janvier 2022 Statut Membre Dernière intervention 31 janvier 2022
31 janv. 2022 à 17:04
Et comment verses-tu NR dans une variable bash?
0
CB8 Messages postés 4 Date d'inscription lundi 31 janvier 2022 Statut Membre Dernière intervention 31 janvier 2022
31 janv. 2022 à 23:59
ça marche, merci :-)
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
1 févr. 2022 à 10:15
et pour mettre la longueur dans une variable
max=100
var=$(awk -v max=$max 'length()>max {print NR; exit}' fichier)
0