sed one-liner, щоб видалити все між парою дужок?


15

Я працюю з текстом, який переповнений між дужками [], які я не хочу. Оскільки я можу видалити дужки самостійно, мені не потрібен однолінійний вкладиш для мене, але мені потрібен однокласник, який видалить усе між ними.

Що з дужками () замість дужок?

Відповіді:


20

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

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

Зауважте, що в дужковому виразі, [^][]щоб відповідати чому-небудь, окрім, [або ], ]обов'язково треба вийти на перше місце. Зазвичай a ]закінчує набір символів, але якщо це перший символ у наборі (тут, після ^символу доповнення), це ]означає себе.

Якщо ви хочете проаналізувати вкладені дужки або якщо текст, що містить рамки, може охопити кілька рядків, sed не є правильним інструментом.


спасибі, @Gilles ... btw, він може охоплювати кілька рядків, але я використовую сценарій Perl для приєднання рядків ...
ixtmixilix

@ixtmixilix: Якщо у вас є сценарій Perl, ви можете також змусити його видалити текст із дужкою. У Perl можна писати s/\[[^\[\]]*\]//g(тобто використовувати зворотні косої риски, щоб уникнути членів набору символів).
Жил 'ТАК - перестань бути злим'

@Gilles ви могли б пояснити більше про [^] [] саме плз. дякую
Араш

1
@arashams […]= набір символів. ^як перший символ означає доповнення набору. ]зазвичай буде позначати кінець набору, але якщо це перший символ, окрім ^, це звичайний символ - порожній набір або доповнення порожнього набору не дозволено. Потім[ є звичайним і ]закінчує набір.
Жил "ТАК - перестань бути злим"

@Gilles tnx за вашу допомогу, але все одно я не отримую його :( яка доза це означає? "^ Як перший символ означає доповнити набір" я маю на увазі, що це робить? Наприклад, чи відповідає він усім вмісту? "
Arash

9

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.