web-dev-qa-db-ja.com

「grep」で特定のWordが表示される行番号を見つけます

grepは、指定されたWordが表示される行番号を提供できますか?

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

41
One Two Three

つかいます grep -n一致の行番号を取得します。

特定の行番号でgrepを開始する方法はないと思います。そのためには、sedを使用します。たとえば、10行目から開始し、一致する行の行番号と行を出力するには、次を使用します。

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

行番号のみを取得するには、使用できます

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

または、単にsedを使用できます。

sed -n '/regex/=' file

2つのsedコマンドを組み合わせると、次のようになります。

sed -n '10,$ { /regex/= }' file
59
Tim Pote

tail +[line number] [file]を呼び出して、行番号を示すgrep -nにパイプすることができます。

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

このメソッドの唯一の問題は、grep -nによって報告される行番号が[line number] - 1の実際の行番号よりも[file]少なくなることです。

3
mrketchup

または使用できます

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

これにより、ファイル内の行の番号付けが処理されます。

   grep -n . file1 

これは、最後のLineNumberToStartWithを出力します

   tail -LineNumberToStartWith

そして最後に、目的の行をgrepします(元のファイルの行番号が含まれます)

grep regEX
2
mawia