файл файла sed после выхода из игры [duplicate]

Ответ на этот вопрос зависит от ваших ответов на следующие вопросы:

  • Вы в порядке с тем, что поддержка такой возможности в настоящее время существует только в браузерах на основе хрома (Chrome & amp Opera]?
  • Вы в порядке с использованием API-интерфейсов, принадлежащих к настоящему времени, чтобы воспользоваться такой способностью?
  • Вы в порядке с возможностью удаления упомянутого API в будущем?
  • Вы отлично справляетесь с сужением файлов, созданных с указанным API, в песочницу (место, за пределами которого файлы не могут повлиять) на диске?

Если вы ответили «да» на все вышеперечисленное, то да, с помощью 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 поддерживается не кем иным, как этим парнем прямо здесь:)

95
задан fedorqui 7 August 2013 в 10:44
поделиться

6 ответов

\ b в регулярных выражениях соответствуют границам слов (т. е. местоположение между символом первого слова и символом, отличным от слова):

$ echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
no bar embarassment
133
ответ дан Joakim Lundborg 15 August 2018 в 16:43
поделиться
  • 1
    большое объяснение! – JohnTortugo 1 February 2013 в 20:55
  • 2
    ясно «Нет смущения». Умный пример текста;) – mtk 12 November 2013 в 14:15
  • 3
  • 4
    @OlegMazko Я также искал приемлемый метод posix для использования в vim, и то, что сработало для меня, было s / \ & lt; 7 // g. Я пытался удалить 7 в начале слова в моем коде. Эта ссылка, в частности, решение J-P, привело меня к ответу: stackoverflow.com/questions/3864467/… (по какой-то причине не удалось получить уценку, чтобы встроить его, как ваш). – jimh 29 March 2017 в 23:46
  • 5
    Спасибо, я сошел с ума, пытаясь сделать замену на слово & quot; и & quot; поэтому \band\b спас день :) – MitchellK 23 June 2018 в 13:22

в команде оболочки:

echo "bar embarassment" | sed "s/\bbar\b/no bar/g" 

или:

echo "bar embarassment" | sed "s/\<bar\>/no bar/g"

, но если вы находитесь в vim, вы можете использовать только позже:

:% s/\<old\>/new/g
2
ответ дан arganzheng 15 August 2018 в 16:43
поделиться

В одной из моих машин разделение слова на «\b» (без кавычек) не сработало. Решение заключалось в том, чтобы использовать «\<» для начала разделителя и «\>» для окончания разделителя.

Объяснить с помощью примера Joakim Lundberg :

$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
no bar embarassment
7
ответ дан Community 15 August 2018 в 16:43
поделиться
$ echo "bar embarassment"|awk '{for(o=1;o<=NF;o++)if($o=="bar")$o="no bar"}1'
no bar embarassment
-2
ответ дан ghostdog74 15 August 2018 в 16:43
поделиться
  • 1
    OP явно заявляет "с использованием sed" – ndemou 27 December 2014 в 19:37
  • 2
    Однако это хорошее решение. – fedorqui 12 May 2015 в 10:20
  • 3
    Это split-manipulate-join, а не чистая замена; это сворачивает несколько пробелов в один и отбрасывает любые ведущие / конечные пробелы: например. 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

110
ответ дан Roland Weber 15 August 2018 в 16:43
поделиться
  • 1
    Просто установите GNU sed (и каждый другой инструмент GNU) через MacPorts или Homebrew и убедитесь, что он первый раз на вашем PATH. Можно сделать Mac довольно удобным. – Jim Stewart 15 August 2013 в 21:41
  • 2
    @JimStewart отличный способ разбить кучу инструментов, которые предполагают «когда на OS X, делать как OS Xers». Тем не менее, я могу определенно предложить brew install coreutils, который префикрует все инструменты gnu. – ELLIOTTCABLE 24 January 2015 в 01:33
  • 3
    brew install gnu-sed использовать gsed – k107 26 February 2015 в 00:01
  • 4
    пиво Coreutils является удивительным. есть ли еще другие пакеты для пива, которые устанавливают целую кучу версий команд gnu или мне нужно установить остальные отдельно? – ckot 10 March 2015 в 17:58
  • 5
    ответил на мой вопрос. есть список пакетов @ apple.stackexchange.com/questions/69223/… – ckot 11 March 2015 в 14:55

Используйте \b для границ слов:

sed -i 's/\boldtext\b/newtext/g' <file>
11
ответ дан t0r0X 15 August 2018 в 16:43
поделиться
  • 1
    Будьте осторожны с []: o,l - & gt; [newtext],[newtext]. Вы, очевидно, имели в виду sed -i 's/\boldtext\b/newtext/g' – JJoao 28 November 2014 в 10:42
Другие вопросы по тегам:

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