Вам необходимо указать, кому вы предоставляете разрешения, например other
, используяchmod o+w testfile.txt
Нам нужно recursive regex
для обработки таких случаев сбалансированных + вложенных фигурных скобок.
Сначала мы создаем регулярное выражение $r
, которое начинается со скобки ' (', затем ищет элементы без скобок (может не быть там из-за *), затем еще раз рекурсивно, без квадратных скобок и, наконец, балансировочная закрывающая скоба.
$ perl -lne '
$r = qr/\( [^()]* (?:(??{ $r }) [^()]*)* \)/x;
print $1 =~ y/\t #//dr while /\G([^()]*) $r/xg;
' file.sv
Результаты:
module_name
instance_name
Команда.
awk '{for(i=1;i<=NF;i++){if (($i ~ /module/)||($i ~ /instance/)) print $i}}' filename
выход
module_name
instance_name
Ваш файл соответствует этим правилам:
Если это не так, отредактируйте свой вопрос. чтобы дать лучшее объяснение и лучшие примеры.
Используйте командуsed
s для замены(s
)для соответствия всей строке, с группой захвата, идущей от начала линии вверх через первое пространство и вторую группу захвата переход от второго пробела к третьему (, исключая конечные точки ). Затем выведите две захваченные строки:
sed 's/^\([^ ]* \)[^ ]* \([^ ]*\).*/\1\2/'
П.С. Если на самом деле пробелов больше трех, и имя экземпляра находится между вторым -- -последним и последним, изменить на это:
sed 's/^\([^ ]* \).* \([^ ]*\).*/\1\2/'
Та же логика, другой инструмент:
pcregrep -o1 -o2 '^([^ ]* )[^ ]* ([^ ]*).*'
-o1 -o2
эквивалентно \1\2
.
Применяется тот же постскриптум.