10
votes

Tuyauterie d'une variable Bash dans Awk et stocker la sortie

Pour illustrer mon problème,

TEST="Hi my name is John"
OUTP=`echo $TEST | awk '{print $3}'`
echo $OUTP


1 commentaires

Utilisez-vous des backticks pour vous assigner au test. Copier et coller du script qui donne l'erreur


5 Réponses :


3
votes

Votre code fonctionne pour moi, tel quel.

[bloom@little-cat-a ~]$ TEST="Hi my name is John"
[bloom@little-cat-a ~]$ OUTP=`echo $TEST | awk '{print $3}'`
[bloom@little-cat-a ~]$ echo $OUTP
name


0 commentaires

24
votes
#!/bin/bash
TEST="Hi my name is John"
set -- $TEST
echo $3

#!/bin/bash
TEST="Hi my name is John"
var=$(echo $TEST|awk '{print $3}')
echo $var

5 commentaires

Cela semble fonctionner dans l'invite de commande, mais lorsqu'il est exécuté comme script shell, je reçois toujours HI: non trouvé. Aucun moyen de réparer cela? Merci!


Modifier: Nevermind, je mettais un espace supplémentaire avant le $ lors de la définition de la variable. Merci beaucoup pour l'aide!


Comment dire awk si la chaîne est le nom imprimer une variable avant de cela?


Comment faire cela avec des chiffres? var = $ (echo "(2 + 3)" | awk '{improvable $ 3}') => 5


Dans le débordement de pile, il n'est pas souhaitable de vider le code. S'il vous plaît, il a besoin d'une certaine édition et d'une explication ultérieure.



1
votes

Comme avec les autres, cela fonctionne pour moi tel quel, mais peut-être ajouter des guillemets double-citations ( ") autour de $ test dans la ligne 2 aiderait. sinon, Des informations plus spécifiques sur le système sur lequel vous exécutez Bash pourrait vous aider.


0 commentaires

0
votes

Un moyen de reproduire un comportement similaire: xxx


0 commentaires

4
votes

en une ligne:

echo $(echo "Hi my name is John" | awk '{print $3}')


0 commentaires