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
之间的部分?