パイプを介して表示する行番号を追加するコマンドまたはプログラムはありますか? [コピー]

パイプを介して表示する行番号を追加するコマンドまたはプログラムはありますか? [コピー]

私はいつも何千ものフィードバックの中からいくつかのキーワードを見つけて、どの行に配置する必要があります。私はフィードバックをファイルにリダイレクトし、vimにファイルを開き、vimコマンドを実行して:set nuこれを実行しました。ただし、これは非常に不便で不要なディスクIOを生成します。
だから、次のような結果を得るためのコマンドがあるのだろうか。

$ sudo my-command | line-number-command | grep 'foo\|bar'
114  bla bla bla foo
514  bla bar bla bla
810  foo bla bla bla
1919 bla bla bar bla

答え1

あなたの場合、パターンに一致する行の番号だけを付ければ、追加のコマンドは必要ありません。単に以下を使用する方が-n簡単で効率的ですgrep

$ sudo my-command | grep -n 'foo\|bar'
114:  bla bla bla foo
514:  bla bar bla bla
810:  foo bla bla bla
1919: bla bla bar bla

プレフィックスは膨大な資源を無駄にするみんな小さな部分だけを印刷するには、ファイルに数字を含む行を入力します(そしてその過程で追加の中間ファイル/パイプを作成します)。

grep -n $(しかし、番号付けを使用することもできます。みんなワイヤー!おそらくそれほど効率的ではないでしょう。しかし、それほど多くはありません。そして、忘れるよりもnl忘れてしまう可能性が高いので、覚えやすくなります。 )nlgrep

答え2

sudo my-command | cat -n | grep 'foo\|bar'

あるいは、コメントでSteeldriverが述べたように、nlより良い答えになるかもしれません。

関連情報