使用sed复制匹配模式的行

时间:2015-03-10 14:50:19

标签: sed

我一直试图在论坛中寻找某个命令已经有一段时间没有找到解决方案,所以我希望你能够帮助我。我想做的事情很简单。我想使用see复制与模式匹配的行。例如,如果我有一个看起来像这样的文件:

abc
def
cda
abd

我想复制包含'ab'的每一行,即:

abc
abc
def
cda
abd
abd

我尝试了以下语法:

sed '/ab/a\&' myfile

因为我读过某个角色“&”代表匹配的模式,但我得到的是:

abc
&def
cda
abd
&

有什么我想念的吗?我想有。

非常感谢您的帮助。

仅供参考,我正在使用mac OS X

3 个答案:

答案 0 :(得分:6)

这可以非常简单:

sed '/ab/p' file

sed默认打印每一行。对于匹配的行,请在额外的时间打印该行。

答案 1 :(得分:3)

您可以尝试下面的内容。

$ sed 's/.*ab.*/&\n&/g' file
abc
abc
def
cda
abd
abd

答案 2 :(得分:1)

简短的awk版本:

awk '/ab/;1' file
abc
abc
def
cda
abd
abd