J'ai donc besoin de convertir une date à un format différent. Avec un pipeline bash, je prends la date à partir de la dernière connexion de la console et je tire les morceaux pertinents avec Awk, comme: quelle sortie: MAINTENANT, je veux prendre "Août 08" et mettre dans une commande qui ressemblerait à ceci comme ceci: p> sorties: 08-08 p> La question que j'ai est, Comment puis-je ajouter cela à mon pipeline et utiliser les variables AWK 4 $ et 5 $ où 'AG 08' est dans cette commande de date? p> p> août 08 Code>
($ 4 = 5 $ 5 = 08, dans ce cas.) P>
date code> pour modifier le format à un date numérique. p>
4 Réponses :
Vous devez simplement utiliser la substitution de commande:
date ... $(last $USER | ... | awk '...') ...
Je suppose que vous avez déjà essayé cela?
Cela ne fonctionne pas. awk code> nécessite des paramètres et la sortie n'est pas acheminée vers
DATE CODE> S Paramètres
Utiliser les tiques de retour doit fonctionner pour obtenir la sortie de votre long pipeline à la date.
date -j -f %b\ %d \`last $USER | grep console | head -1 | awk '{print $4, $5}'\` +%b-%d
Peu importe dans ce cas, mais en général, il est bien préférable d'utiliser $ (...) code> que de backticks. Il peut être imbriqué.
obtenez ou utilisez la substitution de processus pour extraire la sortie de awk code> pour appeler
date code>:
awk code >:: p>
Vous demandez réellement comment utiliser la sortie i> de AWK, pas les variables, dans l'autre commande.
Quelle version de
date code> (et le système d'exploitation, etc.)? GNU Date n'a pas
-j code> et il utilise
-f code> pour la lecture d'un fichier. Votre commande serait
date -d août \ 08 +% m-% d code>
Pas sûr du numéro de version exact - n'a pas de sorti de sorte de sortie. C'est une version BSD sur Mac OSX, donc je règle les options de date en fonction de la page Man du système d'exploitation X 10.6. Seulement l'intention d'exécuter le script sur les clients Mac, mais merci pour l'information; Cela sera utile Devrais-je avoir besoin de faire quelque chose de similaire sur Linux.