Используя sed для скобок

Я не сталкиваюсь с этой проблемой, когда я вхожу в систему как Гостевой пользователь

Это должно быть что-то в Вашем профиле. Если Вы можете, попытаться произвести чистку какого-либо из Вашего ~/.directories это имеет отношение к Gnome. (Принимающий GDM используется.)

3
07.04.2015, 14:19
4 ответа

Просто для тестовой цели

sed ':1;s/([^()]*)//g;t1;s/.*[()].*/No/;t;s/.*/Yes/'

печатает «да» для правильного числа и «нет» для противоположного для каждой строки.

2
27.01.2020, 21:12

Простое решение PERL:

perl -ne '1 while s/\(\)//g; print /[()]/ ? "Invalid\n" : "OK\n"' input.txt

Объяснение: цикл While удаляет () , пока он больше не будет возможно. Если есть какие-то скобки, они не были сбалансированы.

2
27.01.2020, 21:12
sed '  s/.*/YES(&)/;:t
       s/([^()]*)//g;tt
       s/.....*/NO/'
3
27.01.2020, 21:12

Более сложную задачу выполните следующим образом: пометка первых несовпадающих скобок:

#!/usr/bin/perl
use strict;
undef $/;
$_= <>;                   # slurp input
my $P = qr{[^()]*};       # $P = not parentheses

                          # repace matched parentheses by marks
while(s!       \( ($P) \)        !\cA$1\cB!gx){}
while(s!^ ($P) \( (.*) \) ($P) $ !$1\cB$2\cB$3!sgx){}

s!([()])! → $1!;          # mark the first unmatched ()
y!\cA\cB!()!;             # replace marks

print

Использование:

$ cat f
1(2(3(4(5)6)7)8(9)10(
   11(12)13)14)  (15 ( and ) 
      (16(17(18)19)
   20)21(22)23
$ parentesis f
1(2(3(4(5)6)7)8(9)10(
   11(12)13)14)   → (15 ( and ) 
      (16(17(18)19)
   20)21(22)23
0
27.01.2020, 21:12

Теги

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