Я не сталкиваюсь с этой проблемой, когда я вхожу в систему как Гостевой пользователь
Это должно быть что-то в Вашем профиле. Если Вы можете, попытаться произвести чистку какого-либо из Вашего ~/.directories
это имеет отношение к Gnome. (Принимающий GDM используется.)
Просто для тестовой цели
sed ':1;s/([^()]*)//g;t1;s/.*[()].*/No/;t;s/.*/Yes/'
печатает «да» для правильного числа и «нет» для противоположного для каждой строки.
Простое решение PERL:
perl -ne '1 while s/\(\)//g; print /[()]/ ? "Invalid\n" : "OK\n"' input.txt
Объяснение: цикл While удаляет ()
, пока он больше не будет возможно. Если есть какие-то скобки, они не были сбалансированы.
Более сложную задачу выполните следующим образом: пометка первых несовпадающих скобок:
#!/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