Добавить две строки комментария вверху файла

Да.. можно с нейтралиной .

Вы можете использовать Neutralino.os.runCommand(). Но в вашем сценарии можно использовать облачный режим Neutralino.

1
05.01.2021, 15:22
2 ответа

Чтобы избежать всех проблем, связанных с необходимостью заключать в кавычки специальные символы и т. д. для использования с sed, используйте цитируемый здесь -документ:

cat - output.txt <<'END_COMMENTS' >newfile.txt
#$ -cwd
#$ -pe mpi 16

END_COMMENTS

Это объединяет ваши три строки дополнительного текста с содержимым вашего существующего файла output.txtи помещает полученный текст в newfile.txt. Затем вы можете переименовать newfile.txtв output.txt, если хотите.

Команда catиспользуется здесь с двумя аргументами:

  1. -; это указывает catсначала читать из стандартного ввода. Стандартный поток ввода будет содержать документ здесь -, содержащий текст вашего заголовка.
  2. 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для создания трех строк текста заголовка. Результат будет таким же, но он выглядит более уродливым, и вам нужно понять код, чтобы увидеть, как на самом деле выглядит текст заголовка (, если только вы не запустите его, очевидно ).

0
18.03.2021, 22:39

Ответ Кусалананды, вероятно, является лучшим решением, поскольку он всегда будет работать, но я также проверил, что использование решения только для 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

0
18.03.2021, 22:39

Теги

Похожие вопросы