заменить в тексте на переменную с некоторыми новыми строками

Есть способы перенаправления событий в элемент управления, но не ожидайте, что вы сможете легко запускать события в управление огнем самостоятельно, поскольку браузеры будут пытаться заблокировать это (хорошие) соображения безопасности.

Если вам нужно только открыть диалоговое окно файла, когда пользователь нажмет что-нибудь, скажем, потому что вам нужны более удобные кнопки для загрузки файлов, то вы можете взглянуть на , что Шон Инман пришел с .

Мне удалось добиться запуска клавиатуры с творческим переключением фокуса внутри и вне контроля между keydown, keypress & amp; события для создания ключей. YMMV.

. Мой искренний совет - оставить это в покое, потому что это мир несовместимости с браузером. Незначительные обновления браузера могут также блокировать трюки без предупреждения, и вам, возможно, придется повторно изобретать хаки, чтобы он работал.

0
задан Laurent GRENIER 19 March 2019 в 17:37
поделиться

3 ответа

Нет необходимости делать:

MY_VAR=$(cat content.txt)

Сначала прочитать содержимое файла в переменную, а затем заменить текст во втором файле содержимым этой переменной.

Вы можете использовать это sed, чтобы сделать это за один шаг:

sed '/@@MY_VALUE@@/{s///;
r content.txt
}' my_file.txt

некоторое содержимое с отступами ...

some indented content ...

      hostAliases:
      - ip: "?.?.?.?"
        hostnames:
        - "m-0.mongodb-service.default.svc.cluster.local"
      - ip: "?.?.?.?"
        hostnames:
        - "m-1.mongodb-service.default.svc.cluster.local"
      - ip: "?.?.?.?"
        hostnames:
        - "m-2.mongodb-service.default.svc.cluster.local"
      - ip: "?.?.?.?"
        hostnames:
        - "m-3.mongodb-service.default.svc.cluster.local"
some indented content ...

Обновление: [ 1118]

Вы можете использовать это awk для замены шаблона многострочной переменной:

awk -v var="$var" '/@@MY_VALUE@@/{[113] = var} 1' my_file.txt

Для сохранения изменений в строке используйте эту опцию, если используете gnu awl:

[ 114]

Если не используется gnu awk, тогда используйте:

awk -v var="$var" '/@@MY_VALUE@@/{[115] = var} 1' my_file.txt >> $.tmp &&
mv $.tmp my_file.txt
0
ответ дан anubhava 19 March 2019 в 17:37
поделиться

Я наконец нашел совершенно другое решение, удалив значение для замены и разделив мой файл на две части: my_file_part1.txt и my_file_part2.txt, которые являются соответственно частью перед переменной и частью после переменной.

touch my_file.txt
cat my_file_part1.txt >> my_file.txt
echo "$MY_VAR" >> my_file.txt
cat my_file_part2.txt >> my_file.txt
0
ответ дан Laurent GRENIER 19 March 2019 в 17:37
поделиться

Вот более простой способ воспроизвести вашу проблему:

sed -e 's/foo/hello
world/'

Вместо того, чтобы заменить foo двумя строками, он показывает sed: -e expression #1, char 11: unterminated `s' command

Это потому, что перевод строки завершает команду. Вы должны избежать их с помощью обратной косой черты:

sed -e 's/foo/hello\
world/'

Вы можете сделать это в своей переменной с расширением параметра Bash (${var//search/replace}):

sed "s/@@MY_VALUE@@/${var//\n'/\\\n'}/"
0
ответ дан that other guy 19 March 2019 в 17:37
поделиться
Другие вопросы по тегам:

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