Msgstr "неверный код команды". пытаясь использовать grep и sed для замены строки в нескольких файлах

Новичок Unix (и SO) здесь пытается свернуть мои зарождающиеся отладки командной строки.

Я пытаюсь использовать grep и sed для сканирования кучи файлов в моем текущем каталоге и заменять все вхождения строки "192.168.1.1" строкой "192.168.1.0", оставляя только папку .git.

Я попробовал следующее:

grep -lr --exclude-dir=".git" "192.168.1.1" . | xargs sed -i 's/192.168.1.1/192.168.1.0/g' 

и я получаю следующую ошибку:

sed: 1: "./contact.html": invalid command code .

Я был бы очень признателен, если бы кто-то помог мне разобраться, что случилось с моей командой.

Мне также было бы интересно узнать о более эффективном способе выполнения этой задачи, особенно если команда менее сложная и, следовательно, ее легче запомнить, и пока она не требует записи script в perl/bash/etc, но в настоящее время я пытаюсь развернуть sed и grep, и мне все равно будет интересно узнать, почему эта команда не работает, даже если была предоставлена ​​рабочая альтернатива.

Ответ 1

Измените команду sed на:

 xargs sed -i.bak 's/192\.168\.1\.1/192\.168\.1\.0/g'

sed на OSX нуждается в правильном расширении файла с опцией -i.