【发布时间】:2018-06-13 16:56:04
【问题描述】:
我有一个包含此类内容的文本文件:
d__Affenpinscher|c__Abyssinian|h__Kathiawari|
a__Gold|y__Slix|c__Kathiawari|c__Cact
我想获得所有以“c__”开头并以“|”结尾的出现所以最终的结果是:
c__Abyssinian
c__Cact
我对正则表达式不太擅长,所以提前感谢您的帮助。
编辑:我正在寻找一个 bash 命令,以便 grep/sed/awk 可用 我试着从一个基本的例子开始,比如:
sed -n "/<PRE>/,/<\/PRE>/p" input.html
和 作为模式的开始和结束 到sed -n "/c__/,/|/p" breedList.txt > breedC.txt但是我没有得到想要的输出
编辑 2:我试图从类似的线程 How to use sed/grep to extract text between two words? 调整这个答案,但我一定做错了,因为我的输出只是空的。
这是我尝试过的命令:
echo "d__Affenpinscher|c__Abyssinian|h__Kathiawari|" | grep -o -P '(?<=c__).*?(?=|)'
【问题讨论】:
-
您的问题的背景是什么?您是否使用特定的编程语言?您只想在 Bash 中操作文本文件吗?
-
sed中的addr1,addr2语法在addr1选择的行和addr2选择的行之间选择行。