Shell
是否有命令或程序可以添加行號以通過管道顯示?
我總是需要在成千上萬的回饋中找到一些關鍵詞,並將其定位在哪一行。我曾經將回饋重定向到一個文件,然後用 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
sudo my-command | cat -n | grep 'foo\|bar'
或者,正如評論中提到的 Steeldriver
nl
可能是一個更好的答案。
在您的情況下,當您只需要對與模式匹配的行進行編號時,您不需要額外的命令:簡單地使用以下
-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
,但不是那麼多,而且由於我們更容易忘記nl
而不是忘記grep
,因此可能更容易記住。)