致所有的“sed”医生:
你怎么能得到'sed'来提取它在一行中匹配的正则表达式?
换句话说,我只想要与正则表达式相对应的字符串,其中包含行中的所有非匹配字符都被剥离。
我尝试使用如下所示的反向引用功能
regular expression to be isolated
gets `inserted`
here
|
v
sed -n 's/.*\( \).*/\1/p
Run Code Online (Sandbox Code Playgroud)
这适用于某些表达式,例如
sed -n 's/.*\(CONFIG_[a-zA-Z0-9_]*\).*/\1/p
Run Code Online (Sandbox Code Playgroud)
它巧妙地提取了所有以 'CONFIG_ ....' 开头的宏名称(在某些 '*.h' 文件中找到)并逐行打印出来
CONFIG_AT91_GPIO
CONFIG_DRIVER_AT91EMAC
.
.
CONFIG_USB_ATMEL
CONFIG_USB_OHCI_NEW
.
e.t.c.
Run Code Online (Sandbox Code Playgroud)
但是上面的内容分解为类似的东西
sed -n 's/.*\([0-9][0-9]*\).*/\1/p
Run Code Online (Sandbox Code Playgroud)
这总是返回个位数,如
7
9
.
.
6
Run Code Online (Sandbox Code Playgroud)
而不是提取连续的数字字段,例如。
8908078
89670890
.
.
.
23019
.
e.t.c.
Run Code Online (Sandbox Code Playgroud)
PS:我将非常感谢关于如何在“sed”中实现这一点的反馈。我知道如何使用“grep”和“awk”来做到这一点我想知道我对“sed”的理解(尽管有限)是否有漏洞,以及是否有办法在我
拥有的“sed”中做到这一点简直被忽视了。
sed ×1