Я хочу записать результат grep внутри для цикла в файл, сохраняя исходную файловую структуру. Исходный файл:
$cat newtest1
some_text
/homes/myself/joz
ivan petrov - 20/10/19
new customer:
/homes/myself/silvia
john smith - 30/11/19
old customer:
some_text
Я использую grep в для цикла и получаю следующее:
$for i in `cat newtest1 | grep customer -B2`; do echo $i; done
/homes/myself/joz
ivan
petrov
-
и т.д. Структура файла была изменена. Я попробовал printf - тот же результат. Вопрос: как сохранить структуру файла с помощью grep в для цикла?
Необходимо заключить в кавычки переменные и результат замены команды для предотвращения разделения слова:
for i in "$(<newtest1 grep customer -B2)"; do
echo "$i"
done
Конечно, чтобы просто произвести согласующие отрезки длинной линии Вам не нужно for
цикл, но я предполагаю, что Вы хотите сделать другие вещи со строками. В любом случае Вам не нужно cat
, можно позволить grep
откройте файл с grep … newtest1
или позвольте оболочке открыть его и присвоить ее содержание grep
stdin, как я сделал выше. У последнего есть много преимуществ, объясненных в этом большом ответе: Когда я должен использовать перенаправление ввода?