Question équivalent commandes Unix Powershell

Plus d'informations
il y a 16 ans 2 semaines #1890 par Thierry
Bonjour,
Je débute tout juste avec Powershell. Je souhaite l'utiliser pour convertir un korn shell (AIX) de plus de 600 lignes mais il me manque certaines fonctions comme :
grep -v
++++++++++++++++++++++
awk '{print $X}'
++++++++++++++++++++++
while read line
do
#bloc d'instructions
done < fic_entree.txt
++++++++++++++++++++++
:silly:

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 semaines #1891 par Laurent Dardenne
SAlut
tibal écrit:

convertir un korn shell (AIX)

Si je peux me permettre, le mieux est de préciser le traitement que tu souhaites réaliser car tout le monde ne connait pas le Korn Shell et encore moins les différences d'implémentation qu'il peut y avoir si toute fois il en existe...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 semaines #1892 par Thierry
Salut,
Voici ce que je fait sur Unix et souhaite faire en Powershell :
Pour grep -v et awk '{print $X}'[code:1]grep 'CHAINE' fichier.dat | grep -v \"#\" | awk '{print $4,$5,$6}' > fichier.tmp[/code:1]
J'envoie dans le fichier fichier.tmp les champs 4, 5 et 6 des lignes du fichier fichier.dat qui contiennent CHAINE

Pour while read line
[code:1]while read procedure
do
export type_trait=`echo $procedure | awk '{print $1}'`
export traitement=`echo $procedure | awk '{print $2}'`
export param_trait=`echo $procedure | awk '{print $3}'`
export param2=`echo $procedure | awk '{print $4}'`
export param3=`echo $procedure | awk '{print $5}'`
export param4=`echo $procedure | awk '{print $6}'`
EXECUTER_TRAITEMENT
done < fichier.tmp
[/code:1]
Je boucle sur un fichier fichier.tmp, renseigne des variables puis lance la fonction EXECUTER_TRAITEMENT définie plus haut.

Par ailleur, est il possible de lancer un binaire externe après l'avoir placée dans une variable : [code:1]$bin = path_de_mon_binaire\binaire
.$bin -> KO
.\$bin -> KO[/code:1]

Le binaire lancé dans le script mais hors de la variable fonctionne parfaitement.

Et enfin, est-il possible de lancer un script PS1 à partir du planificateur de tâches de Windows, y a t'il une syntaxe particulière ?

Merci pour votre aide.

;)<br><br>Message édité par: Arnaud, à: 10/03/08 10:56

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 semaines #1893 par Arnaud Petitjean
Salut Tibal,

Tout ce que tu cherches à faire est tout à fait possible en PowerShell...

L'équivalent de la commande grep est en PowerShellSelect-String. Après pour découper une chaine, il faut utiliser la méthode Split associée à un objet de type String. Regarde un exemple d'utilisation ici : www.microsoft.com/technet/scriptcenter/topics/msh/payette1.mspx

Pour la redirection dans un fichier, c'est la même chose. Si tu veux plus d'aide, je te conseille de poster un extrait de ton fichier .dat.

Pour while read line
Le plus \&quot;propre\&quot; serait de créer une fonction TRAITEMENT et de lui passer en paramètre les différentes valeurs. Pour l'utilisation de While / Do While, je te conseille de regarder dans l'aide.

Enfin, pour éxecuter un binaire dont le nom se trouve dans une variable, essaie avec la commande Invoke-Expression. Tu trouveras de l'aide ici dans l'aide mémoire .

Bon courage pour la suite...

Arnaud
PS : J'ai vu que tu avais posté les mêmes questions sur le forum de developpez.com. Si tu as des réponses, ce serait bien d'en faire aussi profiter les utilisateurs de ce forum.

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 semaines #1894 par Thierry
Salut Arnaud,

Voici ce que j'ai obtenu sur developpez.com :
Pour l'équivalent de AWK :
[code:1]cd c:\temp
$S=\&quot;Le mot recherché est le troisième\&quot;
$S&gt;Tst.txt
$var=Select-String \&quot;^le mot\&quot; Tst.txt|Foreach-Object {((($_).Line).Split())[3-1]}
$var
ou
switch -regex -file tst.txt
{
\&quot;^le mot\&quot; { $Idx=2; (($_).Split())[$Idx] ; continue}
#Autres clauses Switch
...
}[/code:1]
dont voici le lien :
www.developpez.net/forums/showthread.php?t=505496

Voici un extrait de mon fichier dat :
[code:1]TRAIT extrapm NON NON NON neant
TRAIT mef_recom NON NON OUI mef_reco
TRAIT nettoyer_aigocea NON NON NON neant
TRAIT prepmed NON NON OUI prepmed
TRAIT redrstat NON NON NON neant
TRAIT rejprel NON NON OUI rejprel
TRAIT relmed NON NON OUI relmed
[/code:1]
Par contre, je sais pas comment créer une fonction.
Merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 semaines #1896 par Robin Lemesle
Salut Tibal,

Par contre, je sais pas comment créer une fonction.


Reponse : Comme ceci

[code:1]function omfonction
{
$S=\&quot;Le mot recherché est le troisième\&quot;
$var=Select-String \&quot;^le mot\&quot; Tst.txt|Foreach-Object {((($_).Line).Split())[3-1]}
switch -regex -file tst.txt
{
#...
}

} [/code:1]

Ou sinon tu mets le tout dans un fichier .ps1 pour en faire un script.

Robin MVP PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.098 secondes
Propulsé par Kunena