我的示例字符串如下:
This is 02G05 a test string 20-Jul-2012
Run Code Online (Sandbox Code Playgroud)
现在从我想要提取的上面的字符串02G05.为此我用sed尝试了以下正则表达式
$ echo "This is 02G05 a test string 20-Jul-2012" | sed -n '/\d+G\d+/p'
Run Code Online (Sandbox Code Playgroud)
但上面的命令没有打印任何东西,我相信它的原因是它无法匹配我提供给sed的模式.
所以,我的问题是我在这里做错了什么以及如何纠正它.
当我用python尝试上面的字符串和模式时,我得到了我的结果
>>> re.findall(r'\d+G\d+',st)
['02G05']
>>>
Run Code Online (Sandbox Code Playgroud)
mVC*_*Chr 85
怎么用egrep?
echo "This is 02G05 a test string 20-Jul-2012" | egrep -o '[0-9]+G[0-9]+'
Run Code Online (Sandbox Code Playgroud)
tri*_*eee 78
\d您可能不支持该模式sed.尝试[0-9]或[[:digit:]]改为.
要仅打印实际匹配(而不是整个匹配行),请使用替换.
sed -n 's/.*\([0-9][0-9]*G[0-9][0-9]*\).*/\1/p'
Run Code Online (Sandbox Code Playgroud)
尝试以下方法:
echo "This is 02G05 a test string 20-Jul-2012" | sed 's/.* \([0-9]\+G[0-9]\+\) .*/\1/'
Run Code Online (Sandbox Code Playgroud)
但是请注意,如果一行上有两个图案,它将打印第二个图案。
| 归档时间: |
|
| 查看次数: |
188676 次 |
| 最近记录: |