Есть способы перенаправления событий в элемент управления, но не ожидайте, что вы сможете легко запускать события в управление огнем самостоятельно, поскольку браузеры будут пытаться заблокировать это (хорошие) соображения безопасности.
Если вам нужно только открыть диалоговое окно файла, когда пользователь нажмет что-нибудь, скажем, потому что вам нужны более удобные кнопки для загрузки файлов, то вы можете взглянуть на , что Шон Инман пришел с .
Мне удалось добиться запуска клавиатуры с творческим переключением фокуса внутри и вне контроля между keydown, keypress & amp; события для создания ключей. YMMV.
. Мой искренний совет - оставить это в покое, потому что это мир несовместимости с браузером. Незначительные обновления браузера могут также блокировать трюки без предупреждения, и вам, возможно, придется повторно изобретать хаки, чтобы он работал.
Нет необходимости делать:
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
:
Если не используется gnu awk
, тогда используйте:
awk -v var="$var" '/@@MY_VALUE@@/{[115] = var} 1' my_file.txt >> $.tmp &&
mv $.tmp my_file.txt
Я наконец нашел совершенно другое решение, удалив значение для замены и разделив мой файл на две части: 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
Вот более простой способ воспроизвести вашу проблему:
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'}/"