sed 인쇄 줄 번호

sed 인쇄 줄 번호

이것은 내 샘플 파일입니다.

user@linux:~$ cat file.txt 
Line 1
Line 2
Line 3
Line 4
Line 5
user@linux:~$ 

2~4줄을 인쇄할 수 있어요grep -A2 'e 2' file.txt

user@linux:~$ grep -A2 'e 2' file.txt 
Line 2
Line 3
Line 4
user@linux:~$ 

여행 번호도 인쇄할 수 있어요grep -n

user@linux:~$ grep -nA2 'e 2' file.txt 
2:Line 2
3-Line 3
4-Line 4
user@linux:~$ 

또는 다음을 통해 동일한 작업을 수행할 수 있습니다.sed -n 2,4p file.txt

user@linux:~$ sed -n 2,4p file.txt 
Line 2
Line 3
Line 4
user@linux:~$ 

그런데 줄번호를 출력하는 방법을 모르겠어요sed

줄 번호를 인쇄할 수 있나요 sed?

답변1

AWK:

awk 'NR==2,NR==4{print NR" "$0}' file.txt

더블sed:

sed '2,4!d;=' file.txt | sed 'N;s/\n/ /'

글렌 잭맨~의sed그리고반죽:

sed '2,4!d;=' file.txt | paste -d: - -

바트~의진주버전:

perl -ne 'print "$. $_" if 2..4' file.txt

고양이그리고sed:

cat -n file.txt | sed -n '2,4p'

이것도 보세요답변유제.

조금설명하다:

  • sed -n '2,4p'동일한 작업을 수행 합니다 sed '2,4!d'. 첫 번째는 두 번째와 네 번째(포함) 사이의 줄만 인쇄하고, 후자는 해당 줄을 제외한 모든 줄을 "제거"합니다.

  • sed =줄 번호 인쇄그 뒤에 개행 문자가 옵니다.. 보다수동.

  • cat -n마지막 예에서는 nl또는 으로 대체할 수 있습니다 grep -n ''.

답변2

아래에 언급된 두 가지 방법으로 수행했습니다.

방법 1

awk '/2/{x=NR+2}(NR<=x){print NR"-"$0 }' filename

주문하다

2-Line 2
3-Line 3
4-Line 4

방법 2

sed -n '{;=;p}' filename| sed "N;s/\n/ /g"| sed -n '/2/,+2p'

산출

2 Line 2
3 Line 3
4 Line 4

답변3

이게 바로 그거 아닌가 nl?

nl- 줄 번호 필터

그런 다음 원하는 방법을 사용하여 행을 선택할 수 있습니다.

(편집하다)

모든POSIX,nl 하다빈 줄 수:

$ nl -b a example
     1  line1
     2  
     3  line3
     4  
     5  line5
     6  
$ nl -b a < example | sed -n '2,4p'
     2  
     3  line3
     4  

출력만 계산하려는 경우 파이프를 반대로 하면 됩니다.

관련 정보