Linux: compter le nombre de caractères dans une ligne avec séparateur - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 18-11-2014 à 14:04:24
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
Marsh Posté le 18-11-2014 à 15:28:38
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
Marsh Posté le 18-11-2014 à 16:20:30
Tu l'as placé où ta variable ? Parce que dans un tube ca passe bien
var=blahblah
$ echo -n $var | wc -c
8
Marsh Posté le 19-11-2014 à 00:24:26
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.
Marsh Posté le 18-11-2014 à 13:15:12
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
où
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 !!