2015-10-19 48 views
0

这里印刷不同的图案是一个示例清单:grep的:在不同线路上

apple 
pear 
orange 
orange 
apple 
orange 
pear 
orange 
pear 
orange 
apple 

我所试图实现的是打印全橙色线只有如果后(下)有行苹果在它(和这行也将被打印)。使用上面的列表中,grep的将返回一个连字符标记线:

apple 
pear 
orange 
-orange 
-apple 
orange 
pear 
orange 
pear 
-orange 
-apple 

这是我最好的尝试,到目前为止,我开始命令

strings fruits.txt | egrep 'orange' -A 1 'apple' 

但它返回“ grep:apple:没有这样的文件或目录“。

任何帮助,将不胜感激!

回答

1

有趣的挑战。我认为sed会成为这项工作的更好工具。

sed '/orange/ N; /orange.*\n.*apple/ !{D; N;};' fruits.txt 
+0

嗨金斯基,谢谢你的回复。恐怕它还没有真正的工作。它也返回'pear'行。是因为我这样使用它:sed'/ orange/N; /orange.*\n.*apple/!{D; N;};” fruits.txt |字符串? – clippertm

+0

我将原始文件'串成一个单独的文件,输出不同:它只返回一个“橙色”线。 – clippertm

+0

我想知道为什么。它在我的机器上工作(经典)。 ;)你的新文件与fruits.txt有什么不同? – Jinksy