2013-09-27 32 views

回答

2
sed '/\(pattern\).*/{s//\1/; q;}' 
+0

谢谢,这正是我所寻找的。 –

+0

这会是相反的:sed'/ {s // \ 1 /; q;}。*'/ \(pattern \)'? –

1

使用带有q命令的sed:

sed '/pattern/q' file 

直到pattern发现这将打印文件,然后将退出处理的其余部分。

+0

如果图案位于一条线的中间,则此命令仍会打印出该行的其余部分。有没有一种方法可以在发现字符串后立即停止进程? –

0

有很多方法可以做到这一点。比如,你可以使用grep的-n选项,使其输出线号,提取的第一个行号,并用它来指导head显示的行给定数目出来的文件:

head -n $(grep -n somestring file | cut -d: -f1 | head -n 1) file 
0

使用awk

awk '!f; /pattern/ {f=1}' file 

打印行,如果f=0,如果pattern发现设为f=1

+2

我会用'awk'1;/pattern/{exit}'file'而不是该命令。恕我直言,它更简单,更清晰,再加上它绝对更有效率。 –

+0

另一个更短的版本。 'awk'/ search/{exit} 1'文件' – Jotne

+0

虽然它不会打印包含匹配字符串的行,但它的功能不尽相同。 –

相关问题