我试图在两个字符串之间提取一些文本(在文件中只出现一次)。
假设文件是,
....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
但它没有输出任何东西。
任何帮助将不胜感激。 感谢
答案 0 :(得分:3)
$ sed -n '0,/Your name is/ d; /You are male/,$ d; /^$/d; p' abcd
Dean/Winchester
对于多样性,这是一个awk
解决方案:
$ awk '/Your name is/ {p=1; next} /You are male/ {exit} /^$/ {next} p==1 {print}' abcd
Dean/Winchester
答案 1 :(得分:3)
$ sed -n -e '/^Your name is:/,/^You are male/{ /^Your name is:/d; /^You are male/d; p; }' test
Dean/Winchester