Ответ на этот вопрос зависит от ваших ответов на следующие вопросы:
Если вы ответили «да» на все вышеперечисленное, то да, с помощью FileWriter и FileSystem API, вы можете записывать файлы из контекста вкладки браузера / window с помощью Javascript.
Вот простой пример того, как API используются в тандеме для этого:
function onQuotaRequestSuccess (givenQuota) {function saveFile (directoryEntry) {function createFileWriter (fileEn try) {function write (fileWriter) {var dataBlob = new Blob (["Hello world!"], {type: "text / plain"}); fileWriter.write (dataBlob); } fileEntry.createWriter (написать); } directoryEntry.getFile ("testFile", {create: true, exclusive: true}, createFileWriter); } requestFileSystem (Window.PERSISTENT, givenQuota, saveFile); } var wishQuota = 1024 * 1024 * 1024; var quotaManagementObj = navigator.webkitPersistentStorage; quotaManagementObj.requestQuota (wishQuota, onQuotaRequestSuccess);
С BakedGoods * - библиотека JavaScript, которая устанавливает единый интерфейс, который может использоваться для проведения общих операций хранения во всех собственных (включая FileSystem) -нативные хранилища, вышеупомянутое выполняется с помощью этого:
bakedGoods.set ({data: [{key: "testFile", значение: "Hello world!", введите: "text / plain "}], storageTypes: [" fileSystem "], options: {fileSystem: {storageType: Window.PERSISTENT}}, complete: function (byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj) {}});
Спецификация FileSystem не определяет рекомендации о том, как структуры каталогов должны появляться на диске. Например, в браузерах, основанных на хромах, песочница имеет виртуальную файловую систему (структуру каталогов, которая не обязательно существует на диске в той же форме, что и при доступе из браузера), в которой каталоги и файлы, созданные с помощью API-интерфейсы размещены.
Итак, если вы можете писать файлы в систему с API-интерфейсами, поиск файлов без API (ну, без API-интерфейса FileSystem) может быть нетривиальным делом.
* BakedGoods поддерживается не кем иным, как этим парнем прямо здесь:)
\ b в регулярных выражениях соответствуют границам слов (т. е. местоположение между символом первого слова и символом, отличным от слова):
$ echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
no bar embarassment
в команде оболочки:
echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
или:
echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
, но если вы находитесь в vim, вы можете использовать только позже:
:% s/\<old\>/new/g
В одной из моих машин разделение слова на «\b
» (без кавычек) не сработало. Решение заключалось в том, чтобы использовать «\<
» для начала разделителя и «\>
» для окончания разделителя.
Объяснить с помощью примера Joakim Lundberg :
$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
no bar embarassment
$ echo "bar embarassment"|awk '{for(o=1;o<=NF;o++)if($o=="bar")$o="no bar"}1'
no bar embarassment
echo " bar embarassment " | awk '{for(o=1;o<=NF;o++)if($o=="bar")$o="no bar"}1' | cat -E
дает no bar embarassment$
.
– musiphil
26 July 2016 в 22:31
В Mac OS X, , ни этих синтаксисов regex не работают внутри sed для соответствия целых слов
\bmyWord\b
\<myWord\>
Слушайте меня сейчас и поверьте мне позже, этот уродливый синтаксис - это то, что вам нужно использовать:
/[[:<:]]myWord[[:>:]]/
Так, например, для замены mint на minty только для целых слов:
sed "s/[[:<:]]mint[[:>:]]/minty/g"
Источник: справочная страница re_format
sed
(и каждый другой инструмент GNU) через MacPorts или Homebrew и убедитесь, что он первый раз на вашем PATH
. Можно сделать Mac довольно удобным.
– Jim Stewart
15 August 2013 в 21:41
brew install coreutils
, который префикрует все инструменты gnu.
– ELLIOTTCABLE
24 January 2015 в 01:33
Используйте \b
для границ слов:
sed -i 's/\boldtext\b/newtext/g' <file>
[]
: o,l
- & gt; [newtext],[newtext]
. Вы, очевидно, имели в виду sed -i 's/\boldtext\b/newtext/g'
– JJoao
28 November 2014 в 10:42
\band\b
спас день :) – MitchellK 23 June 2018 в 13:22