острота sed для удаления всего между парой скобок?

Единственное время я использую или слышу минус вместо тире, при использовании chmod для удаления определенного разрешения, например.

chmod -x script.sh

поскольку рассматриваемое действие можно считать вычитанием.

15
14.06.2011, 23:46
2 ответа

Замена [some text] пустой строкой. Принятие Вас не хочет анализировать вложенные скобки, some text не может содержать скобки.

sed -e 's/\[[^][]*\]//g'

Обратите внимание на это в выражении скобки [^][] соответствовать чему-либо, но [ или ], ] должен быть на первом месте. Обычно a ] закончил бы набор символов, но если это - первый символ в наборе (здесь, после ^ символ образования дополнения), ] обозначает себя.

Если Вы действительно хотите проанализировать вложенные скобки, или если текст на кронштейнах может охватить несколько строк, sed не является правильным инструментом.

20
27.01.2020, 19:49
  • 1
    благодарит, @Gilles... btw, он может охватить несколько строк, но я использую сценарий Perl для присоединения к строкам... –  ixtmixilix 12.06.2011, 14:25
  • 2
    @ixtmixilix: Если у Вас есть сценарий Perl, можно заставить его удалить текст на кронштейнах также. В Perl можно записать s/\[[^\[\]]*\]//g (т.е. используйте обратные косые черты для выхода из членов набора символов). –  Gilles 'SO- stop being evil' 12.06.2011, 14:58
  • 3
    @Gilles вызовов мог Вы объяснять больше о [^] [] точно. поблагодарите Вас –  Arash 17.05.2013, 20:23
  • 4
    @arashams […] = набор символов. ^ поскольку первый символ означает дополнять набор. ] обычно была бы метка конец набора, но если это - первый символ кроме ^, это - обычный символ — пустое множество или дополнение пустого множества не разрешены. Затем [ обычно и ] заканчивает набор. –  Gilles 'SO- stop being evil' 17.05.2013, 21:35
  • 5
    @Gilles tnx для Вашей справки, но тем не менее я не получаю его :( какую дозу это означает? "^ как первый символ означает дополнять набор", я имею в виду то, что он делает? например, это подобрано ко всему содержанию? –  Arash 17.05.2013, 23:01

Команда sed -e 's/([^()]*)//g'сделает круглые скобки вместо скобок.

9
27.01.2020, 19:49

Теги

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