Comment modifier la sortie de grep :obtenir chaque résultat dans chaque ligne
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
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.