Как изменить вывод grep:получите каждый результат в каждой строке

StackOverflow https://stackoverflow.com//questions/23012019

  •  21-12-2019
  •  | 
  •  

Вопрос

Я использую grep для поиска шаблона в файле, содержащемся в переменной

Код здесь:

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

Результат:A) некоторые слова B)некоторые линии C)некоторые числа

выведите результат в 1 строке.Я хотел бы получить результаты по одному для строки a

Нравится:

A) somewords
B) somelines
C) somenumbers

Как я могу?

Спасибо

Это было полезно?

Решение

Просто процитируйте свой $result переменная и новые строки будут сохранены:

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

Причина, по которой это работает, заключается в том, что когда вы заключаете что-либо в двойные кавычки в bash, все, что находится внутри этих кавычек, обрабатывается как одно слово.Это означает, что он не будет подвержен разделение слов.Смотрите также: http://mywiki .wooledge.org/WordSplitting

Эффективно, когда вы используете $result, он расширяется до этого (потому что новые строки рассматриваются как разделители):

echo A) somewords B) somelines C) somenumbers

Когда вы используете "$result" и избегайте разделения слов, оно расширяется до этого:

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

Дополнительное примечание:с помощью $(...) вместо обратных ссылок улучшается читаемость, а также является более портативным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top