Да.. можно с нейтралиной .
Вы можете использовать Neutralino.os.runCommand()
. Но в вашем сценарии можно использовать облачный режим Neutralino.
Чтобы избежать всех проблем, связанных с необходимостью заключать в кавычки специальные символы и т. д. для использования с sed
, используйте цитируемый здесь -документ:
cat - output.txt <<'END_COMMENTS' >newfile.txt
#$ -cwd
#$ -pe mpi 16
END_COMMENTS
Это объединяет ваши три строки дополнительного текста с содержимым вашего существующего файла output.txt
и помещает полученный текст в newfile.txt
. Затем вы можете переименовать newfile.txt
в output.txt
, если хотите.
Команда cat
используется здесь с двумя аргументами:
-
; это указывает cat
сначала читать из стандартного ввода. Стандартный поток ввода будет содержать документ здесь -, содержащий текст вашего заголовка. output.txt
; это ваш существующий файл. Он будет прочитан всякий раз, когда будут прочитаны все данные, поступающие на стандартный ввод. Тестирование:
$ cat output.txt
AAAA
BBBB
CCCC
DDDD
Подсказка >
в начале строк ниже — это дополнительная подсказка оболочки bash
, используемая, когда для завершения команды требуется дополнительный ввод.
$ cat - output.txt <<'END_COMMENTS' >newfile.txt
> #$ -cwd
> #$ -pe mpi 16
>
> END_COMMENTS
$ cat newfile.txt
#$ -cwd
#$ -pe mpi 16
AAAA
BBBB
CCCC
DDDD
Обратите внимание, что если окончательный вывод должен быть сценарием оболочки bash
, то первой строкой вашего заголовка должна быть строка#!
-с абсолютным путем к интерпретатору bash
.
Вы также можете просто использоватьprintf
:
printf '%s\n' '#$ -cwd' '#$ -pe mpi 16' '' |
cat - output.txt >newfile.txt
Вместо документа здесь -используется printf
для создания трех строк текста заголовка. Результат будет таким же, но он выглядит более уродливым, и вам нужно понять код, чтобы увидеть, как на самом деле выглядит текст заголовка (, если только вы не запустите его, очевидно ).
Ответ Кусалананды, вероятно, является лучшим решением, поскольку он всегда будет работать, но я также проверил, что использование решения только для sed также работает:
$ cat output.txt
AAAA
BBBB
CCCC
DDDD
$ sed '1i#$ -cwd\n#$ -pe mpi 16\n' output.txt
#$ -cwd
#$ -pe mpi 16
AAAA
BBBB
CCCC
DDDD
В основном используется команда sed (i )nsert вместо (s )ubstitute:1
-работать на линии 1 i
-вставить перед 1i
-вставить перед первой строкой
Это работает при использовании gnu sed 4.8. YMMV