나는 항상 수천 개의 피드백 중에서 몇 가지 키워드를 찾아 어느 행에 배치해야 합니다. 저는 피드백을 파일로 리디렉션한 다음 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
잊어버릴 가능성이 높기 때문에 기억하기가 더 쉬울 것입니다. )nl
grep
답변2
sudo my-command | cat -n | grep 'foo\|bar'
아니면 댓글에서 Steeldriver가 언급했듯이 nl
더 나은 답변이 될 수도 있습니다.