Cómo modificar la salida grep:obtener cada resultado en cada línea
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
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.