Question
équivalent commandes Unix Powershell
- Thierry
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 16 ans 2 semaines #1890
par Thierry
équivalent commandes Unix Powershell a été créé 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
++++++++++++++++++++++
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
++++++++++++++++++++++
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 16 ans 2 semaines #1891
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:équivalent commandes Unix Powershell
SAlut
tibal écrit:
tibal écrit:
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...convertir un korn shell (AIX)
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Thierry
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 16 ans 2 semaines #1892
par Thierry
Réponse de Thierry sur le sujet Re:équivalent commandes Unix Powershell
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
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.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 16 ans 2 semaines #1893
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:équivalent commandes Unix Powershell
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 \"propre\" 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.
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 \"propre\" 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.
- Thierry
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 13
- Remerciements reçus 0
il y a 16 ans 2 semaines #1894
par Thierry
Réponse de Thierry sur le sujet Re:équivalent commandes Unix Powershell
Salut Arnaud,
Voici ce que j'ai obtenu sur developpez.com :
Pour l'équivalent de AWK :
[code:1]cd c:\temp
$S=\"Le mot recherché est le troisième\"
$S>Tst.txt
$var=Select-String \"^le mot\" Tst.txt|Foreach-Object {((($_).Line).Split())[3-1]}
$var
ou
switch -regex -file tst.txt
{
\"^le mot\" { $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
Voici ce que j'ai obtenu sur developpez.com :
Pour l'équivalent de AWK :
[code:1]cd c:\temp
$S=\"Le mot recherché est le troisième\"
$S>Tst.txt
$var=Select-String \"^le mot\" Tst.txt|Foreach-Object {((($_).Line).Split())[3-1]}
$var
ou
switch -regex -file tst.txt
{
\"^le mot\" { $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.
- Robin Lemesle
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 260
- Remerciements reçus 0
il y a 16 ans 2 semaines #1896
par Robin Lemesle
Robin MVP PowerShell
Réponse de Robin Lemesle sur le sujet Re:équivalent commandes Unix Powershell
Salut Tibal,
Reponse : Comme ceci
[code:1]function omfonction
{
$S=\"Le mot recherché est le troisième\"
$var=Select-String \"^le mot\" 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.
Par contre, je sais pas comment créer une fonction.
Reponse : Comme ceci
[code:1]function omfonction
{
$S=\"Le mot recherché est le troisième\"
$var=Select-String \"^le mot\" 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.079 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- équivalent commandes Unix Powershell