2016-02-16 4 views
1

Я пытаюсь выполнить команду ниже и получать выходные данные «без входных файлов». Что мне следует изменить?SED «нет входных файлов»

grep -rl '[old IP address]' /etc | xargs sed -i 's/[old IP address]/[new IP address]/g'

Благодаря

ответ

2

Если вы хотите, чтобы избежать запуска СЕПГ, когда Grep не производит никакого вывода, то (так как вы помечено это с Ubuntu), вы можете дать -r или --no-run-if-empty аргумент xargs:

--no-вводного, если пусто
-r
Если стандартный ввод не содержит никаких незадействованных элементов, не запускайте команду. Обычно команда запускается один раз, даже если вход отсутствует. Этот параметр является расширением GNU.

Так что ваша команда должна выглядеть следующим образом:

grep -rl "$old" /etc | xargs -r sed -i "s/$old/$new/g" 
+0

Я уже добавил -r в моей команде. – ubuntu

+0

Я попробовал ваше предложение, но получил «grep:/etc - это каталог». – ubuntu

+0

Я попробовал ваше предложение и получил «grep:/etc - это каталог». Теперь, что делать? – ubuntu