Как передать файлы Я использовал grep для sed с ключом -n для замены файлов - PullRequest
0 голосов
/ 19 февраля 2019

У меня проблема с пониманием, как хранить файлы, которые я собираюсь изменить с помощью sed

grep -Fr "from 'app" --include=*.js src/ | sed -s "s:from 'app: from ':"

Я видел использование grep с sed для одного известного файла для хранения в переменной.

$file = file.txt

grep "import from {} redux" $file | sed -s "s/ReactJS/ReactJS./" $file`

Как сделать для нескольких файлов * .js в src?

1 Ответ

0 голосов
/ 19 февраля 2019

Вам необходимо добавить параметр -l в grep, чтобы вывести соответствующие имена файлов, а затем передать ut в xargs, чтобы обработать каждое соответствующее имя файла:

grep -ZlrF "from 'app" --include=*.js | xargs -0 sed "s:from 'app: from ':"

Используется -Z параметр в grep чтобы ограничить вывод с помощью символа NUL, который можно использовать с помощью xargs -0.Это используется для того, чтобы позаботиться об именах файлов с пробелами и другими специальными символами.


Если у вас нет gnu grep, тогда используйте find + sed, как предложено Эд:

find . -name '*.js' -print0 | xargs -0 sed "s:from 'app: from ':"
...