У меня есть следующее в файле
description: '''
This rule forbids throwing string literals or interpolations. While
JavaScript (and CoffeeScript by extension) allow any expression to
be thrown, it is best to only throw <a
href="https://developer.mozilla.org
/en/JavaScript/Reference/Global_Objects/Error"> Error</a> objects,
because they contain valuable debugging information like the stack
trace. Because of JavaScript's dynamic nature, CoffeeLint cannot
ensure you are always throwing instances of <tt>Error</tt>. It will
only catch the simple but real case of throwing literal strings.
<pre>
<code># CoffeeLint will catch this:
throw "i made a boo boo"
# ... but not this:
throw getSomeString()
</code>
</pre>
This rule is enabled by default.
'''
с несколькими другими вещами в этом файле.
Я извлекаю эту часть в моем скрипте через sed -n "/'''/,/'''/p" $1
(где $1
находится файл).
Это дает мне переменную с содержимым как один вкладыш
description: ''' This rule forbids throwing string literals or interpolations. While JavaScript (and CoffeeScript by extension) allow any expression to be thrown, it is best to only throw <a href="https://developer.mozilla.org /en/JavaScript/Reference/Global_Objects/Error"> Error</a> objects, because they contain valuable debugging information like the stack trace. Because of JavaScript's dynamic nature, CoffeeLint cannot ensure you are always throwing instances of <tt>Error</tt>. It will only catch the simple but real case of throwing literal strings. <pre> <code># CoffeeLint will catch this: throw "i made a boo boo" # ... but not this: throw getSomeString() </code> </pre> This rule is enabled by default. '''
Как я могу теперь извлечь часть между '''
?
Или есть даже лучший способ извлечь его из многострочного файла?
Я на Mac El Captain 10.11.2 и GNU bash, версия 3.2.57 (1) -релиз (x86_64-apple-darwin15)
shell-script
text-processing
Эмерсон Код
источник
источник
Ответы:
будет извлекать (и печатать после новой строки) часть между каждой парой '' '.
Остерегайтесь,
perl
чтобы весь файл хранился в памяти перед началом его обработки, чтобы решение не подходило для очень больших файлов.источник
Попробуйте это, если у вас есть
gawk
илиmawk
в вашем распоряжении:Это предполагает, что
'''
в файле нет других ключей.Объяснение: Он устанавливает разделитель записей в три одинарных кавычки и печатает, если номер записи четный.
К сожалению, это не будет работать со всеми
awk
реализациями, так как многосимвольные разделители записей не являются частьюPOSIX awk
.источник
Не так хорошо, как ответ на awk, но как вы изначально использовали sed
Или короче, как указано Гленном Джекманом в комментариях (немного изменено)
Беги как
Вывод
источник
sed -n "/'''/,//{//!p}"
- вероятно, придетсяset +H
сначала сделать это в bash, чтобы отключить расширение истории.