2013-03-16 118 views
1

使用sed,我想打印文件的第一个匹配行。我只想匹配线本身,没有其他线。这是一个类似的命令,将打印的最后匹配行打印第一个匹配行

$ sed '/while/h; $!d; g' foo.sh 
while read video 

通过aragaer’s answer的启发,这似乎做

$ sed '/while/q;d' foo.sh 
    while sleep 1 
+1

为什么不能简单地用grep和头? – 2013-03-16 16:37:37

+1

为什么不只是'grep'? – 2013-03-16 16:37:44

+0

'grep -m1 while foo.sh' – 2013-03-16 18:37:07

回答

2

这可能为你工作(GNU SED):

sed '/while/!d;q' file 
5
sed -n '/LINE TO MATCH/{p;q}' 
  • -n表示“不打印任何东西,除非说“
  • p - print
  • q - 停止并退出

p和q都会在匹配行上触发。

+0

我的shell需要{p; q;} – suspectus 2013-03-16 16:44:33