2012-05-14 2 views
29

grepは、指定した単語が表示される行番号を指定できますか?特定の単語が「grep」で表示される行番号を見つけよう

また、grepを使用して、特定の行から下の単語を検索することはできますか?

+1

これは[SuperUser](http://superuser.com/)に適していると思います。 –

+4

@dunsmoreb私は同意しない。 'grep'はパワーユーザーツールと同じようにプログラマーのツールです。 –

+0

私はいつも 'grep'を使います。しかし、これはプログラミング関連の問題ではありません。 –

答えて

44

grep -nを使用して一致する行番号を取得します。

特定の行番号でgrepを開始する方法はありません。そのためにはsedを使います。たとえば、10行目で開始し、マッチした行の行番号と行を印刷、使用する:

sed -n '10,$ { /regex/ { =; p; } }' file 

のみ行番号を取得するには、

grep -n 'regex' | sed 's/^\([0-9]\+\):.*$/\1/' 

それともを使用することができます単にsedを使用することができます:2つのsedコマンドを組み合わせ

sed -n '/regex/=' file 

、あなたが得る:

を実際の行数よりも [line number] - 1少なくなります

tail +[line number] [file] | grep -n /regex/ 

この方法の唯一の問題はgrep -nによって報告された行番号です:

sed -n '10,$ { /regex/= }' file 
+0

これで、grep -nは単語と行番号を含む行を返します。行番号を取得するだけの方法はありますか? –

+0

@OneTwoThree私の編集を参照してください。 –

+0

@OneTwoThreeそれはあなたのために働いたのですか? –

3

あなたは行番号を示しtail +[line number] [file]grep -nへのパイプ、それを呼び出すことができます[file]にあります。

1

か、このファイル内の行に番号を付けるの

grep -n . file1 

を世話をします。これは、最後の-LineNumberToStartWith

tail -LineNumberToStartWith 

そして最後にそれを印刷します

grep -n . file1 |tail -LineNumberToStartWith|grep regEx 

を使用することができますあなたの希望する行をgrepします(orignalファイルの行番号を含みます)

grep regEX 
関連する問題