파이프를 통해 표시할 줄 번호를 추가하는 명령이나 프로그램이 있습니까? [복사]

파이프를 통해 표시할 줄 번호를 추가하는 명령이나 프로그램이 있습니까? [복사]

나는 항상 수천 개의 피드백 중에서 몇 가지 키워드를 찾아 어느 행에 배치해야 합니다. 저는 피드백을 파일로 리디렉션한 다음 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더 나은 답변이 될 수도 있습니다.

관련 정보