Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1904 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Linux: compter le nombre de caractères dans une ligne avec séparateur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Linux: compter le nombre de caractères dans une ligne avec séparateur

n°1368898
Marco12345​6
Posté le 18-11-2014 à 13:15:12  profilanswer
 

Bonjour :)
 
J'ai besoin de récupérer les données de colonnes d'un fichier afin de pouvoir les "variabiliser" et les utiliser dans un autre script (je récupère ligne par ligne).
Je n'ai pas de soucis pour ca, à l'aide de grep, awk ou cut (surtout des cut d'ailleurs) je m'en sors plutot pas trop mal (jusqu'à aoujourd'hui) mais le problème c'est que la longueur des colonnes peut changer.
 
Mon fichier se présente sous la forme suivante:
 
Client                  Ville                                                                code postal
----------------- ------------------------------------------------- ------------
Marcel dupont      Brest                                                               29200
Ginette dupuis      Saint-Remy-en-Bouzemont-Saint-Genest-et-Isson   51290
 
 
Or si Ginette disparait de la liste mon fichier va devenir:
 
Client                 Ville        code postal
----------------- -------- ------------
Marcel dupont      Brest      29200
 
 
 
Ce que je voudrais faire c'est compter le nombre de "-" en dessous des noms de colonnes (Client, Villes et Code postal) pour pouvoir utiliser ma commande cut en fonction du nombre de caractères.
 
 
Dans le cas de mon fichier 1 j'aurai donc:
 
Client=17
Ville=47
CP=12
 

nbr_caract_ville=`expr 17 + $Ville`
 
soit:
VILLE1=$(cat $fichier1 | cut -c 18-${nbr_caract_ville} )
 
Ce qui donne:
VILLE1=$(cat $fichier1 | cut -c 18-65 )
 
 
Et pour mon fichier 2:
Client=17
Ville=8
CP=12
 
 
VILLE1=$(cat $fichier1 | cut -c 18-26 )
 
 
Je sais compter le nombre de caractère dans une ligne mais comment faire pour compter chaque champ avec comme séprarateur un espace ?
 
 
Merci !!

mood
Publicité
Posté le 18-11-2014 à 13:15:12  profilanswer
 

n°1368902
kisscoolz
Posté le 18-11-2014 à 14:04:24  profilanswer
 

Truc à l'arrache je dirais tu récupère la ligne de tirets dans une variable couplé à une boucle for  
for i in var; do wc -c $i; done


---------------
http://lacabanedeladmin.trickip.net/
n°1368910
Marco12345​6
Posté le 18-11-2014 à 15:28:38  profilanswer
 

Tout simplement :)
 
compteur=1
for i in `cat $DD_TMP/fichier.txt`
do
  echo $i > $DD_TMP/fichier.tmp
  export valeur${compteur}=`wc -c $DD_TMP/fichier.tmp | awk -F " " ' { print $1 } '`
  compteur=`expr $compteur + 1`
done
 
(je suis obligé d'exporter mon $i dans un fichier because le wc -c sur une variable il n'aime pas des masses).
 
Y'a surement plus simple mais au moins ca marche !!
 
Merci Kisscoolz :) :) :)

n°1368912
kisscoolz
Posté le 18-11-2014 à 16:20:30  profilanswer
 

Tu l'as placé où ta variable ? Parce que dans un tube ca passe bien  
 
var=blahblah
$ echo -n $var | wc -c
8
 


---------------
http://lacabanedeladmin.trickip.net/
n°1368930
Profil sup​primé
Posté le 19-11-2014 à 00:24:26  answer
 

salut,
 
de là où je suis, je compte 49 tirets sous «Ville» !?
 
je ne comprends pas très bien ta requête : quel doit être le format de sortie si tu retires «Ginette» du fichier ?
 
ça ressemble à un fichier à champs de longueurs fixes, qui sera très bien traité avec `gawk' grâce à la variable `FIELDWIDTHS', que tu peux construire en comptant (`length()') le nombre de caractères des champs de la deuxième ligne du fichier.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Linux: compter le nombre de caractères dans une ligne avec séparateur

 

Sujets relatifs
Faire cohabiter Linux et Windows 7 ?GNU Octave : caractères accentués dans un graphique ?!
Rencontre avec Linux 15 ans apres mon premier essaihesite grandement a passer de window a linux
Cle USB inutilisable après installation Linuxlinux sur wind7
Programme en ligne de commande sans afficher les erreursDésinstaller Linux Mint 17
Recherche application pour les anniversaires sous (Linux)Installation serveur Irc sous Linux
Plus de sujets relatifs à : Linux: compter le nombre de caractères dans une ligne avec séparateur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR