Question

J'utilise grep pour rechercher un modèle dans un fichier contenu dans une variable

Codez ici :

result=`grep "$pattern" $file`
echo $result

Résultat:A) quelques mots B) quelques lignes C) quelques nombres

imprimer le résultat sur 1 ligne.J'aimerais avoir les résultats un pour la ligne a

Comme:

A) somewords
B) somelines
C) somenumbers

Comment puis-je?

Merci

Était-ce utile?

La solution

Citez simplement votre $result variable et les nouvelles lignes seront conservées :

result=$(grep "$pattern" $file)
echo "$result"

La raison pour laquelle cela fonctionne est que lorsque vous placez quelque chose entre guillemets dans bash, tout ce qui se trouve à l'intérieur de ces guillemets est traité comme un seul mot.Cela signifie qu'il ne sera pas soumis à fractionnement de mots.Voir également: http://mywiki.wooledge.org/WordSplitting

Efficace lorsque vous utilisez $result, il est étendu à ceci (car les nouvelles lignes sont traitées comme des délimiteurs) :

echo A) somewords B) somelines C) somenumbers

Quand vous utilisez "$result" et évitez le fractionnement de mots, il est étendu à ceci :

echo "A) somewords
B) somelines
C) somenumbers"

Note supplémentaire:en utilisant $(...) au lieu de backticks, améliore la lisibilité et est également plus portable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top