У меня есть текстовые файлы в нескольких подкаталогах
какой-то/путь/один/файл
какой-то/путь/два/файл
какой-то/путь/три/файл
какой-то/путь/foo/файл
...
Мне нужно иметь возможность найти файл grep для совпадения, но сохранить возврат отдельных строк, чтобы я мог работать с каждым совпадением индивидуально с помощью цикла позже.
У меня есть:
SITE=$(grep -w $1 some/path/*/file)
однако это просто создает очень длинную строку, в которой все просто сливается в одну строку.
В идеале эта переменная должна содержать значение * из имени пути в каждой строке:
Например:
какой-то/путь/один/файл
какой-то/путь/три/файл
содержать строку, в которой есть bar
.
SITE=$(grep -w bar some/path/*/file)
echo $SITE
должно выглядеть так:
some/path/one/file:this is a line of text that has bar in it
some/path/three/file:this is a line of text that has bar in it
но вместо этого я получаю это:
some/path/one/file:this is a line of text that has bar in it some/path/three/file:this is a line of text that has bar in it
Есть ли способ сделать эту переменную многострочной, чтобы позже я мог делать такие вещи, как:
for i in `echo $SITE`; do
WHATEVER=$(echo $i | cut -d ':' -f 1 | cut -d '/' -f 3)
echo $WHATEVER
done
и иметь вывод:
one
three
Или я иду об этом совершенно неправильно?