gars comment puis-je faire ce travail p>
`trouver / xyz / abc / musique / | grep def` p> blockQuote>
Je ne veux pas stocker la matrice dans une variable temporaire. Comment pouvons-nous utiliser directement sur ce tableau? P>
afin d'obtenir le 1er élément de ce tableau p>
echo $ {$ (`trouver / xyz / abc / musique / | grep def`) [0]} S'il vous plaît aidez-moi comment je peux atteindre ce p> blockQuote>
5 Réponses :
Si vous avez juste besoin du premier élément (ou plutôt de la ligne), vous pouvez utiliser Si vous avez besoin d'accès aux éléments arbitraires, vous pouvez stocker Le tableau d'abord, puis récupérez l'élément: p> mais cela ne mettra pas chaque ligne de sortie GREP dans un élément séparé d'un tableau. P> Si vous vous souciez de lignes entières au lieu de mots, vous pouvez utiliser tête code>:
tête code> et
queue code> pour cette tâche, comme: p>
Merci pour le commentaire mais je veux aussi obtenir d'autres éléments. Je veux faire des opérations comme un tableau
Pourquoi dites-vous que chaque ligne de grep n'ira pas dans des éléments de tableau séparés?
Parce que chaque mot le fera. Au moins dans l'exemple que j'ai donné;)
Mettez l'appel à trouver dans des crochets de tableau
X=( $(find /xyz/abc/music/ | grep def) ) echo ${X[1]} echo ${X[2]} echo ${X[3]} echo ${X[4]}
C'est celui pour moi. J'ai examiné assez quelques-unes sur la question de l'obtention de grep des résultats dans un tableau et je trouve le mot «élégant» montrant beaucoup dans un contexte négatif comme critère inaccessible ... C'est à peu près l'exemple d'une solution qui réellement répond à la définition d'élégant et i> accomplit la tâche dans une ligne. La plupart des réponses sont "Il n'y a pas de bon moyen de faire cela" ... "de nombreuses méthodes de rond-point ..." Merci! +1
echo $ (pensées OM01) :)
Voulez-vous obtenir la première ligne de la sortie?
find /xyz/abc/music/ |grep def|head 1
Même si un peu de retard, la meilleure solution doit être la solution de Ray, mais vous devez écraser la variable de séparateur de champ de champ par défaut IFS à la nouvelle ligne pour prendre des lignes complètes en tant que champ de réseau. Après avoir rempli votre matrice, vous devez basculer IFS à la valeur d'origine. Je vais développer les rayons Solution: espère que cela aide p> p>
Bon point, surtout si vous avez des blancs dans vos noms de fichiers. Un moyen un peu plus agréable de définir des IFS, cependant, consiste à utiliser la syntaxe ifs = $ '\ n'.
Ceci fonctionnera
array_name=(`find directorypath | grep "string" | awk -F "\n" '{print $1}'`) echo $array_name