Perl-скрипт запускается в терминале, но не запускается при вызове из Java-программы

Я запустил Perl-скрипт, который заменяет строку на другую:

perl -pi.back -e 's/str1/str2/g;' path/to/file1.txt

Когда я запускаю эту команду из терминала, она хорошо заменяет все вхожденияstr1 в данном файлеstr2, Когда я запускаю это из Java, он получает доступ к файлу, но замена не происходит:

Runtime.getRuntime().exec("perl -pi.back -e 's/str1/str2/g;' path/to/file1.txt");
Я уверен, что он обращается к файлу (файл, кажется, отредактирован в gedit (требуется перезагрузка)).Я пробовал JavaProcessBuilder класс, но тот же результат происходит.Когда я используюRuntime.exec() или жеProcessBuilder с другими командами (например,gedit newFile.txt) они хорошо работаютПо иронии судьбы, я распечатал вышеупомянутую команду perl из java, взял пасту в терминале и операция замены завершена!Нет исключений или ошибок при использовании этих команд. (Я использовал попробовать и поймать, чтобы убедиться в этом).Я также использовал/usr/bin/perl вместоperl в cmd, чтобы гарантировать выполнение perl cmd.

Так в чем проблема?

РЕДАКТИРОВАТЬ:

Я решил эту проблему, просто удалив кавычки из команды в Java. Спасибо @ikegami за помощь. Итак, рабочая версия:

perl -pi.back -e s/str1/str2/g; path/to/file1.txt

вместо

perl -pi.back -e 's/str1/str2/g;' path/to/file1.txt

Ответы на вопрос(1)

Ваш ответ на вопрос