Regex 使用正则表达式提取模式中嵌入的字符串

Regex 使用正则表达式提取模式中嵌入的字符串,regex,bash,grep,pattern-matching,Regex,Bash,Grep,Pattern Matching,我一直在使用bash命令行grep-e和sort-nr尝试过滤和分析来自一堆“数据”文件的一些行。到目前为止,我得到了如下输出文件: 25 The X value is: bla bla bla done 19 The X value is: foo done 19 The X value is: bar done 19 The X value is: bbb done 19 The X value is: xxx yyy zzz done 在这里你可以看到我感兴趣的频率和“数据”部

我一直在使用
bash
命令行
grep-e
sort-nr
尝试过滤和分析来自一堆“数据”文件的一些行。到目前为止,我得到了如下输出文件:

 25 The X value is: bla bla bla done
 19 The X value is: foo done
 19 The X value is: bar done
 19 The X value is: bbb done
 19 The X value is: xxx yyy zzz done
在这里你可以看到我感兴趣的频率和“数据”部分


我找不到一个正则表达式供
grep
用来“清理那些行”。我的意思是:我可以用一个正则表达式截取那些“数据”行,比如
is:.*done
(我知道这个模式在我分析的文件中是独一无二的),但是我如何才能清除那些行,准确地提取“is:”和“done”之间的内容呢?试试
sed

$ sed -r 's/^.*: (.*) done$/\1/' outputfile.txt

bla bla bla
foo
bar
bbb
xxx yyy zzz

如果您想返回:

bla bla bla
foo
bar
bbb
xxx yyy zzz
你可以用

(?<=:)(.*)(?=done)

(?grep不会为您这样做。看看cut,它按位置或分隔符删除列,或者sed,它删除正则表达式。您是否需要频率和输出中
is:
done
之间的部分?