Я использую следующее для поиска рекурсивно для конкретной строки и замены ее другим:
grep -rl oldstr path | xargs sed -i 's/oldstr/newstr/g'
Это работает нормально. Единственная проблема в том, что если строка не существует, то sed
терпит неудачу, потому что она не получает никаких аргументов. Это проблема для меня, так как я запускаю это автоматически с помощью ANT, и сборка завершилась с ошибкой, так как sed
не работает.
Есть ли способ сделать его отказоустойчивым, если строка не найдена?
Мне интересно однострочное простое решение, которое я могу использовать (не обязательно с grep
или sed
, но с общими командами unix, подобными этим).