Печать строки между двумя круглыми скобками

У меня есть файл с этими строками

G8 = P(G1,G3) G9 = P(G3,G4) G12 = P(G2,G9) G15 = P(G9,G5) G16 = P(G8,G12) G17 = P(G12,G15) 

Мне нужен вывод как

 G1,G3 G3,G4 ..... 

Как это сделать с помощью команды sed / grep или с помощью perl?

6 Solutions collect form web for “Печать строки между двумя круглыми скобками”

Несколько других способов:

  • sed

     sed 's/.*(\(.*\))/\1/' file 
  • Perl

     perl -pe 's/.*\((.*)\)/$1/' file 

    или

     perl -lanF"[()]" -e 'print $F[1]' file 

    или

     perl -pe 's/.*\((.+?)\).*/$1/;' file 
  • awk

     awk -F"[()]" '{print $2}' file 
  • оболочка

     while IFS="()" read ab; do echo "$b"; done < file 

Существует несколько способов сделать это:

 perl -nle 'print $1 if /\((.*)\)/' file 

или:

 awk 'NR > 1 {print $1}' RS='(' FS=')' file 

sed 's/^.*(//;s/)$//' /path/to/file

Чтобы сломать это:

sed – это s itream. 's/^.*(//;s/)$//' – это сценарий, отправляемый в sed , который разбивается следующим образом:

 s/^.*(// substitute nothing for the beginning of any line (`^`) followed by anything up until an open-paren (`(`) s/)$// substitute nothing for a close-paren (`)`) followed immediately by the end of a line 
 grep -oP '\(\K[^)]+' file 

Это ищет открывающую скобку, игнорирует ее, а затем печатает все последующие символы без закрытия.

Требуется GNU grep

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

$ cat test01 | cut -d "(" -f2 | cut -d ")" -f1

 awk -F'(' '{print $NF}' file | sed 's/)//g' 
  • sed - найти строку из 4 чисел с предшествующим символом и добавить символ
  • Как я могу исключить строки, которые соответствуют шаблонам диапазона в sed?
  • Способ вставки определенного столбца, когда в терминале
  • sed не различает полное совпадение регулярных выражений и отсутствие соответствия
  • sed - соответствие по октету IP и удаление строки
  • Заменить первый столбец файла с помощью вывода команды
  • метки тега sed
  • Используйте sed для извлечения переменной из 1 файла и поместите ее в другую
  • Использовать переменную и новую строку в BSD sed?
  • В чем смысл использования нескольких восклицательных знаков в sed?
  • Sed для копирования части имени файла в другое содержимое файла с той же подстрокой
  • Linux и Unix - лучшая ОС в мире.