Если вы хотите извлечь только <something>
, я бы предложил grep -P
(регулярное выражение perl):
grep -P -o '(?<=\(1 ).*?(?=\))' INPUTFILE
-o
возвращает только совпадающую часть, равную <something>
.Регулярное выражение ищет текст, которому предшествует (1
, а затем )
.
Вы не сможете сделать это с помощью egrep
, поскольку оно не поддерживает обходные пути.Лучшее, что вы можете сделать, это извлечь (1 <something>)
с помощью:
egrep -o '\(1 (.*)\)' INPUTFILE
[foo@bar ~]$ grep -P -o '(?<=\(1 ).*?(?=\))' INPUTFILE
hello
shalom
hola
[foo@bar ~]$ egrep -o '\(1 (.*)\)' INPUTFILE
(1 hello)
(1 shalom)
(1 hola)