可以说我有一个这样的文件
abcefghijklxyz
abcefghijkl
我只想获取abc
行与行之间的字符串。行尾可以定义为正常的行尾或字符串xyz
。
我的问题是
如何只使用grep
和正则表达式获得匹配的字符串?例如,上面显示的两行的预期输出为
efghijkl
efghijkl
我不要开始和结束标记。
到现在为止我一直在尝试
grep -oh "abc.*xyz"
我使用Ubuntu 13.04和Bash shell。
这条线将切掉开头abc
和结尾 xyz
(如果有的话),并为您提供所需的部分:
grep -oP '^abc\K.*?(?=xyz$|$)'
与您的示例:
kent$ echo "abcefghijklxyz
abcefghijkl"|grep -oP '^abc\K.*?(?=xyz$|$)'
efghijkl
efghijkl
xyz
正文中间的另一个示例:
kent$ echo "abcefghijklxyz
abcefghijkl
abcfffffxyzbbbxyz
abcffffxyzbbb"|grep -oP '^abc\K.*?(?=xyz$|$)'
efghijkl
efghijkl
fffffxyzbbb
ffffxyzbbb
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句