Pregunta

Estoy usando grep para buscar un patrón a través de un archivo contenido en una var

Código aquí:

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

Resultado:A) algunas palabras B) algunas líneas C) algunos números

imprimir el resultado en 1 línea.Me gustaría tener resultados uno para la línea a.

Como:

A) somewords
B) somelines
C) somenumbers

¿Cómo puedo?

Gracias

¿Fue útil?

Solución

Simplemente cita tu $result variable y las nuevas líneas se conservarán:

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

La razón por la que esto funciona es que cuando se incluye algo entre comillas dobles en bash, todo lo que está dentro de esas comillas se trata como una sola palabra.Esto significa que no estará sujeto a división de palabras.Ver también: http://mywiki.wooledge.org/WordSplitting

Efectivamente cuando usas $result, se expande a esto (porque las nuevas líneas se tratan como delimitadores):

echo A) somewords B) somelines C) somenumbers

cuando usas "$result" y evita la división de palabras, se expande a esto:

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

Nota adicional:usando $(...) en lugar de comillas invertidas mejora la legibilidad y también es más portátil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top