2011-02-19 59 views
1

如果我有一個包含的grep從文件開始到行中的所有行包含字符串

statementes 
asda 
rertte 
something 
nothing here 

我想用grep /提取物(不使用AWK)每行從開始直到我得到的字符串「某物輸入文件」。我怎樣才能做到這一點? grep -B不起作用,因爲它需要確切的行數。

所需的輸出:

statementes 
asda 
rertte 
something 

回答

2

這不是一個完全強勁,但肯定-B作品...只是讓-B算巨大:

grep -B `wc -l <filename>` -e 'something' <filename> 
+1

你如何傳遞一個命令輸出到一個參數,反正呢? xargs的?比傳遞給`grep -B`的`wc -l`更好的是使用`grep -n something | cut -d:-f1`並將其傳遞給`head -n` – jmilloy 2011-02-19 07:10:24

0

你可以使用一個bash while循環和退出月初的時候你打的字符串:

$ cat file | while read line; do 
> echo $line 
> if echo $line | grep -q something; then 
> exit 0 
> fi 
> done 
0
head -n `grep -n -e 'something' <filename> | cut -d: -f1` <filename> 
相關問題