我的示例字符串如下:
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) 我有一个看起来像这样的数据:
AB208804_1 446 576 AB208804_1orf 0
AB208804_20 446 576 AB208804_20orf 0
Run Code Online (Sandbox Code Playgroud)
我想把它们转换成这个:
AB208804 446 576 AB208804orf 0
AB208804 446 576 AB208804orf 0
Run Code Online (Sandbox Code Playgroud)
只需删除第1列和第4列中的_\digit部分即可.
为什么这条线不起作用:
sed 's/_\d+//g'
Run Code Online (Sandbox Code Playgroud)
什么是正确的方法(单线)?