24 mai 2011
Remplacer un saut de ligne par un espace avec la commande tr
Comment remplacer un saut de ligne par un espace dans un fichier ou une variable ? De diverses manières me direz-vous :) Pour ma part, j'ai choisi la commande tr, en une ligne cela donne :
Pour une variable :
echo ${mavariable} | tr "\n" " "
Pour un fichier :
cat monFichier | tr "\n" " "
Ex: voilà mon fichier initial :
15kklhlkhlkggbnjbkjkkk47
Voilà le résultat :
1 5 kklhlkhlk ggbnjbkjkkk 4 7
En savoir plus sur la commande tr : man tr
16 mai 2011
$* en ksh : récupération de la liste des paramètres positionnels
Cette petite note pour vous expliquer comment récupérer la liste des paramètres positionnels en ksh. Vous avez un script et vous souhaitez lui passer non pas un mais plusieurs paramètres. Cf. l'exemple ci-dessous :
monScript.ksh param1 param2 param3 param4
Ensuite dans votre script vous voulez récupérer la liste des paramètres passés au script. Peu importe, le nombre de paramètres, vous aurez la liste stockée dans cette variable :
$*
Cela paraît simple mais dans le feu de l'action on peut facilement se faire avoir et utiliser $1... [Lire la suite]
14 mars 2011
Comment utiliser une variable ksh dans sed ?
Je travaille sur une fonction en ksh qui recherche un pattern puis supprime la ligne du fichier contenant ce pattern. Voilà ce que cela donne :
Mon fichier contient :
hhhhhhiuiujiuj
5768897979
hbjjlklhjg
970979060
aaaaaaaaa
lklhllhylljhl
Après traitement il doit contenir (suppression de la ligne contenant aaaaaaaaa) :
hhhhhhiuiujiuj
5768897979
hbjjlklhjg
970979060
lklhllhylljhl
Le problème c'est que aaaaaaaaa est en réalité une variable. Du coup, je tente d'utiliser sed de cette manière :
sed "/$maVariable/d" monFichier... [Lire la suite]
07 décembre 2010
Ecrire dans un fichier et dans la sortie standard avec la commande tee
Comment fait-on pour lancer une commande sous Linux en ligne de commande et récupérer le résultat dans la sortie standard et dans un fichier ?
Avec la commande tee !
Comment ça fonctionne ? Je ne le savais pas jusqu'à ce que mon collègue me l'explique :) Il faut utiliser pour cela la commande tee de la sorte :
command | tee -a
Merci à mon collègue Ahmed :)
Plus d'infos sur la commande tee
17 mars 2010
Scripts shell, le debug avec l'option -x
Vous venez de coder un script shell, tout beau, tout propre, bien indenté, mais voilà il ne fonctionne pas. Pourtant, vous le retournez dans tous les sens, vous intégrez des echo partout à chaque condition, chaque boucle if. Simplement ce script est coriace, il ne se laisse pas faire !
Mon collègue Ludovic m'a expliqué hier comment venir à bout des scripts difficiles, et ce avec un seule option à passer avant d'exécuter son script. Laquelle, me direz-vous ? Patience :)
C'est l'option -x que vous devrez utiliser et ce avec n'importe... [Lire la suite]
21 décembre 2009
Debug de scripts sous Linux : connaître la date de dernier accès à un fichier
Vous êtes en pleine programmation, ça plante, vous ne savez plus par où commencer ! Si ce scénario vous rappelle des souvenirs, il y a une commande très simple à utiliser pour savoir si votre script accède à tous les fichiers nécessaires à son exécution.
Par exemple, j'ai un script ksh qui lance une requête SQL dans Oracle et qui a besoin de plusieurs fichiers : environnement oraenv, requête SQL, fichier résultat (.lst), ...
Vous pouvez utiliser une commande que vous connaissez sûrement, à savoir : ls, vous lui passez en paramètre... [Lire la suite]
20 novembre 2008
Tester si un fichier existe et est non vide (en ksh)
En ksh, c'est simple tout est optimisé, concis et clair !
Alors en une ligne et en très peu de commandes, ci-dessous un test à utiliser et à ré-utiliser pour tester si un fichier existe et est non vide :if [[ -e $PATH && -s $PATH ]]then#placer votre code icifi
ps : code récupéré lors de ma formation en ksh (formation IBM AL32FR)
Pour info : sur ce site vous trouverez d'autres tests.
18 novembre 2008
Date de la veille en ksh
Vous devez récupérer les fichiers de logs de la veille (ayant pour extension une date) et vous ne savez pas comment faire. Si on soustrait un jour et que nous sommes le premier jour du mois par exemple ?? Ou encore, si nous sommes le 1er jour de l'année, nous passons dans ce cas à l'année précédente.
Sachez que j'ai trouvé un script fonctionnel sur ce site : commentcamarche.net Merci Slamagirand!
J'ai juste le format de la date :#!/bin/ksh## fonction qui recupere la date de la veille :# date -d '1 days ago'#YESTERDAY=$((`date... [Lire la suite]
27 octobre 2008
Date en ksh
20081027183742
Comment obtenir ce type de date en ksh ?
20081027183742
soit année en quatre chiffres + mois en deux chiffres + jour en deux
chiffres + heure au format 24h et non 12h + minutes + secondes
Vous utilisez la fonction date à laquelle vous passez les paramètres adéquates à savoir :
# initialisation d'une variable VarDate, attention, ce sont des anti-quotes (Alt Gr+7 sur votre clavier)
VarDate=`date +%Y%m%d%H%M%S`
# affichage de la date en question, attention une fois stockée dans la variable, cette date ne peut... [Lire la suite]
23 octobre 2008
cut and paste in ksh for weekly reports instead of daily reports
Si comme moi, on vous demande au dernier moment un fichier reporting hebdomadaire alors qu'au départ c'était censé être un fichier reporting quotidien, je vous recommande ces quelques lignes ci-dessous.
Le but est de concaténer ligne à ligne les différents fichiers que vous avez déjà généré au préalable.
1ère étape : couper les lignes correspondant aux colonnes souhaitées et les coller dans un fichier temporaire.
Dans mon exemple, je n'ai qu'une seule colonne, d'où l'utilisation de -f2 (en vert) dans la ligne de... [Lire la suite]