Formule shell préfixe
Résolu
Benoit A.
Messages postés
455
Date d'inscription
Statut
Membre
Dernière intervention
-
Benoit A. Messages postés 455 Date d'inscription Statut Membre Dernière intervention -
Benoit A. Messages postés 455 Date d'inscription Statut Membre Dernière intervention -
Je relance un nouveau sujet qui est similaire à ma première question mais j'apporte un peu plus de précision.
Je reçois un fichier en format csv (emploi_fixe) sur mon serveur contenant x colonnes. Sachant que la première colonne (ID) contient un chiffre compris entre 1 et 192000 et qu'il n'y a aucune en-tête sur mon fichier.
Je cherche à créer une formule en shell (.sh) qui puisse me permettre d'ajouter la lettre "S" avant mon ID après la ligne 192000. Autrement dit je voudrais quand je reçois le fichier csv avec la ligne :
"192001";"01/01/1900";" ";"01/02/1900";"404250";"00";"0";"FESD";"AMF";" ";"65";"99";"P999";" ";"1";"SV";"07";" ";"45.0";"184465";"N";"999";
j'ai un autre fichier qui se créé (qui porterais le même nom) avec cette nuance :
"S192001";"01/01/1900";" ";"01/02/1900";"404250";"00";"0";"FESD";"AMF";" ";"65";"99";"P999";" ";"1";"SV";"07";" ";"45.0";"184465";"N";"999";
Ceci ne marche pas :
Auriez-vous une idée ??
Merci d'avance pour votre aide
Je reçois un fichier en format csv (emploi_fixe) sur mon serveur contenant x colonnes. Sachant que la première colonne (ID) contient un chiffre compris entre 1 et 192000 et qu'il n'y a aucune en-tête sur mon fichier.
Je cherche à créer une formule en shell (.sh) qui puisse me permettre d'ajouter la lettre "S" avant mon ID après la ligne 192000. Autrement dit je voudrais quand je reçois le fichier csv avec la ligne :
"192001";"01/01/1900";" ";"01/02/1900";"404250";"00";"0";"FESD";"AMF";" ";"65";"99";"P999";" ";"1";"SV";"07";" ";"45.0";"184465";"N";"999";
j'ai un autre fichier qui se créé (qui porterais le même nom) avec cette nuance :
"S192001";"01/01/1900";" ";"01/02/1900";"404250";"00";"0";"FESD";"AMF";" ";"65";"99";"P999";" ";"1";"SV";"07";" ";"45.0";"184465";"N";"999";
Ceci ne marche pas :
while IFS=';' read -r -k1 ID
do emploi_fixe ${ID//\"/} -gt 192000 && s=S || s=""
echo "\"$s$ID\";$ID"
done < emploi_fixe.prn
Auriez-vous une idée ??
Merci d'avance pour votre aide
A voir également:
- Formule shell préfixe
- Formule si ou - Guide
- Classic shell - Télécharger - Personnalisation
- Formule moyenne excel plusieurs colonnes - Guide
- Prefixe france - Guide
- Formule mathématique - Télécharger - Études & Formations
2 réponses
ce sujet est un doublon de celui-ci, où j'ai dit que
-K1n'est pas un nom de variable valide, et ce que je pense du «ça marche pas».
awk 'BEGIN{FS=OFS=";""} $2 <= 192000 { print } $2 > 192000 { $2="S"$2 ; print }' emploi_fixe.full.prn > emploi_fixe.prnEst-ce que je peux faire quelque chose comme ça ? :
cat emploi_fixe.full.prn | sort -u | sort -t\; -k1,1 -k2.8,2.11 -k2.5,2.6 -k2.2,2.3 ; awk 'BEGIN{FS=OFS="\""} $2 <= 192000 { print } $2 > 192000 { $2="S"$2 ; print }'> emploi_fixe.prnEt idéalement je peux remplacer 192000 par une variable ?
Oui. Mais il faut déclarer ta variable dans awk :
awk -v VAR=192000 'BEGIN{FS=OFS="\""} $2 <= VAR...Ou-v VAR=${var_shell}si ta variable est déjà déclarée dans un script.