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

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

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' 
  • Удалите повторяющиеся строки, сохраняя порядок строк
  • Способ использования `/ usr / bin / env sed -f` в shebang?
  • Отфильтруйте пути из текстового файла, который глубже, чем их непосредственный предшественник
  • Используя sed, чтобы заменить только первые два регулярных выражения с разными строками
  • разделение файла в файле
  • Получение подстрок между разделителями несколько раз из одной строки без цикла
  • Как извлечь текст с помощью sed
  • с sed, как я могу заменить слово в соответствующей строке?
  • как печатать поле между двойной цитатой
  • Как заменить строку в файлах, используя звездочку в форме поиска
  • Относительные смещения линии в awk (/ pattern / + 1 или / pattern / -1)
  • Linux и Unix - лучшая ОС в мире.