从两个单词之间抓取字符串,但从头开始

时间:2013-09-11 09:53:03

标签: regex bash sed

我想抓一个sed的字符串。假设我有字符串aabbcc,我想查找aacc之间的内容。我像这样使用sed

sed -n '/aa/,/cc/p' 

并且没关系,但我希望获得类似aabb的内容,所以我希望sed在开始和结束之间返回字符串,但包括开头。

我该怎么做?

编辑

好的,让我更具体一点。我查找文本的文件如下所示:

aa bbbbbbbbbbbbbb  
bbbbbbbbbbbbbbbbb  
bbbbbbbbbbbbbbbbb  
cc

3 个答案:

答案 0 :(得分:1)

像这样使用sed:

d='aabbcc'
s='aa'
e='cc'
sed "s/^\(${a}.*\)${e}$/\1/" <<< "$d"
aabb

编辑:根据已修改的问题,请使用以下命令:

sed -n '/aa/,/cc/{/cc/!p;}' file
aa bbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbb

答案 1 :(得分:0)

从你问题的当前状态我收集到这是一个可能的答案:

sed -n 's/\(^.*bb\).*/\1/p'

像这样使用:

echo "aabbcc" | sed -n 's/\(^.*bb\).*/\1/p'

打印

aabb

答案 2 :(得分:0)

有关

  

假设我有字符串aabbcc,我想找到aa之间的内容   和cc。

echo "aabbcc" | sed -r 's/aa(.*)cc/\1/'

输出:

bb