str
具有以下模式:
1 abc (1 <something>)
例如:
1 abc (1 hello)
1 abc (1 shalom)
1 abc (1 hola)
如何使用<something>
从str
中提取egrep
?
答案 0 :(得分:8)
如果您只想提取<something>
,那么我建议grep -P
(perl regex):
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)
答案 1 :(得分:1)
或者,您可以使用简单的awk
单行代码。
awk -F"[ )]" '{print $(NF-1)}' filename
[jaypal:~/Temp] cat filename
1 abc (1 hello)
1 abc (1 shalom)
1 abc (1 hola)
[jaypal:~/Temp] awk -F"[ )]" '{print $(NF-1)}' filename
hello
shalom
hola