Использование grep и sed для поиска и замены строки

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

grep -rl oldstr path | xargs sed -i 's/oldstr/newstr/g'

Это работает нормально. Единственная проблема в том, что если строка не существует, то sed завершается ошибкой, потому что не получает никаких аргументов. Это проблема для меня, так как я запускаю это автоматически с помощью ANT, и сборка завершается неудачно, поскольку sed не работает.

Есть ли способ сделать его отказоустойчивым, если строка не найдена?

Меня интересует однострочное простое решение, которое я могу использовать (не обязательно с grep или sed , но с такими общими командами unix, как эти).

68
задан Michael 28 January 2014 в 00:59
поделиться