10
votes

Comment utiliser la sortie de Awk dans une autre commande?

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: xxx

quelle sortie: août 08 ($ 4 = 5 $ 5 = 08, dans ce cas.)

MAINTENANT, je veux prendre "Août 08" et mettre dans une commande date pour modifier le format à un date numérique.

qui ressemblerait à ceci comme ceci: xxx

sorties: 08-08

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?


3 commentaires

Vous demandez réellement comment utiliser la sortie de AWK, pas les variables, dans l'autre commande.


Quelle version de date (et le système d'exploitation, etc.)? GNU Date n'a pas -j et il utilise -f pour la lecture d'un fichier. Votre commande serait date -d août \ 08 +% m-% d


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.


4 Réponses :


13
votes

Vous devez simplement utiliser la substitution de commande:

date ... $(last $USER | ... | awk '...') ...


0 commentaires

-1
votes

Je suppose que vous avez déjà essayé cela? XXX


1 commentaires

Cela ne fonctionne pas. awk nécessite des paramètres et la sortie n'est pas acheminée vers DATE S Paramètres



0
votes

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


1 commentaires

Peu importe dans ce cas, mais en général, il est bien préférable d'utiliser $ (...) que de backticks. Il peut être imbriqué.



5
votes

obtenez awk pour appeler date : xxx

ou utilisez la substitution de processus pour extraire la sortie de awk :: xxx


0 commentaires