提取两个字符串之间的文本bash sed排除

提取两个字符串之间的文本bash sed排除,bash,sed,Bash,Sed,我试图在两个字符串之间提取一些文本,这两个字符串在文件中只出现一次 假设文件是 ....Some Data Your name is: Dean/Winchester You are male. Some data ..... 我想提取“你的名字是:”和“你是男性”之间的文本。两者都是唯一的,只出现一次。 那么输出应该是, Dean/Winchester 我试着用sed sed -n 's/Your name is:\(.*\)You are male./\1/' abcd 但

我试图在两个字符串之间提取一些文本,这两个字符串在文件中只出现一次

假设文件是

....Some Data    
Your name is:

Dean/Winchester

You are male. Some data .....
我想提取“你的名字是:”和“你是男性”之间的文本。两者都是唯一的,只出现一次。 那么输出应该是,

Dean/Winchester
我试着用sed

sed -n 's/Your name is:\(.*\)You are male./\1/' abcd
但是它没有输出任何东西

任何帮助都将不胜感激。 谢谢

对于多样性,这里有一个awk解决方案:

$ awk '/Your name is/ {p=1; next} /You are male/ {exit} /^$/ {next} p==1 {print}' abcd 
Dean/Winchester
对于多样性,这里有一个awk解决方案:

$ awk '/Your name is/ {p=1; next} /You are male/ {exit} /^$/ {next} p==1 {print}' abcd 
Dean/Winchester

我不确定,但你是否尝试删除括号前的反斜杠?我不确定,但你是否尝试删除括号前的反斜杠?但“Dean/Winchester”前后的空行将出现在output@BrendenCarvalho我不明白你还想删除空白行。我将更新。@BrendenCarvalho已修复。现在就试试吧。但是在“迪安/温彻斯特”前后的空行都会出现output@BrendenCarvalho我不明白你还想删除空白行。我将更新。@BrendenCarvalho已修复。现在试试看。
$ sed -n -e '/^Your name is:/,/^You are male/{ /^Your name is:/d; /^You are male/d; p; }' test 

Dean/Winchester