sed one-liner, чтобы удалить все между парой скобок?

15

Я работаю с текстом, который в скобках [] заполнен вещами, которые мне не нужны. Поскольку я могу удалить скобки самостоятельно, мне не нужен однострочный, чтобы сделать это для меня, но мне нужен однострочный, который удалит все между ними.

А как насчет скобок () вместо скобок?

ixtmixilix
источник

Ответы:

20

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

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

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

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

Жиль "ТАК - прекрати быть злым"
источник
спасибо, @Gilles ... кстати, он может занимать несколько строк, но я использую сценарий Perl для объединения строк ...
ixtmixilix
@ixtmixilix: Если у вас есть скрипт на Perl, вы можете также удалить текст в квадратных скобках. В Perl вы можете писать s/\[[^\[\]]*\]//g(то есть использовать обратную косую черту для экранирования членов набора символов).
Жиль "ТАК - перестань быть злым"
@ Жиль, не могли бы вы рассказать подробнее о [^] [], пожалуйста? спасибо
Arash
1
@arashams […]= набор символов. ^как первый символ означает дополнить набор. ]обычно будет означать конец набора, но если это первый символ, отличный от ^обычного символа - пустой набор или дополнение пустого набора не допускаются. Тогда [это обычное и ]заканчивается набор.
Жиль "ТАК - перестань быть злым"
@Gilles tnx за вашу помощь, но я до сих пор не понимаю :( Какую дозу это значит? »^ Как первый символ означает дополнить набор« я имею в виду, что он делает? Например, соответствует ли он всему содержимому? »
Араш
9

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

ixtmixilix
источник