В скриптах перед нами может возникнуть задача не просто отобразить результаты команды grep, а совершить с ними определённые действия. Первое, что приходит в голову для такой задачи, – это присвоить вывод команды grep переменной, а затем обработать полученное значение этой переменной. При проверке вы можете убедиться, что в присвоенных переменной значениях теряются белые пробелы (перевод строк). Можно продолжить искать решения и для этой проблемы, но я предлагаю поступить проще.
Одним из простых способов является не присвоение вывода новой переменной, а непосредственная обработка каждой полученной от grep строки в петле while/read.
Это выглядит примерно так:
grep xyz abc.txt | while read -r line ; do echo "Обрабатывается $line" # здесь ваш код done
Есть ещё один вариант этой схемы, который может подойти в зависимости от того, чего именно вы хотите добиться.
Если вам нужно изменять переменный в петле (при этом эти изменения должны быть видны снаружи), то вы можете обрабатывать подстановку следующим образом:
while read -r line ; do echo " Обрабатывается $line" # здесь ваш код done < <(grep xyz abc.txt)
Связанные статьи:
- Как использовать кавычки в регулярных выражениях grep (66.1%)
- Как использовать grep для поиска по стандартному выводу ошибок (stderr) (66.1%)
- Команда grep: опции, регулярные выражения и примеры использования (62.8%)
- Лучшие терминальные мультиплексные инструменты (53.3%)
- Как присвоить переменной вывод команды в Bash (53.3%)
- Как в Bash прочитать ввод пользователя в переменную? (RANDOM - 37.3%)