Как изменить вывод grep:получите каждый результат в каждой строке
Вопрос
Я использую 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"
Дополнительное примечание:с помощью $(...)
вместо обратных ссылок улучшается читаемость, а также является более портативным.