줄 번호를 포함하여 파일의 줄 범위를 인쇄합니다.

줄 번호를 포함하여 파일의 줄 범위를 인쇄합니다.

sed파일의 여러 줄을 인쇄하는 oneliner가 있습니다 .

sed -n '10,20p' file.txt

위 코드는 file.txt의 10행부터 20행까지 인쇄합니다.

그런데 줄 번호를 어떻게 인쇄할 수 있나요?

답변1

노력하다 awk:

awk 'FNR==10,FNR==20 {print FNR ":" $0}' file.txt

그러면 줄 번호, 콜론, 그리고 10~20 범위의 줄이 인쇄됩니다.

또는 20행 이후 읽기를 중지합니다.

awk 'FNR >= 10 {print FNR ":" $0}; FNR == 20 {exit}' file.txt

여러 파일을 처리하고 awk구현에서 이 nextfile지시문을 지원하는 경우:

awk -v OFS=: 'FNR >= 10 {print FILENAME, FNR, $0}; FNR == 20 {nextfile}' ./*.txt

(현재 파일 이름도 여기에 인쇄됩니다.)

답변2

sed=줄번호를 출력하는 명령어 가 있습니다 .

sed -n '10,20{=;p}' file.txt

그러나 실제 줄 위에 별도의 줄에 줄 번호를 인쇄합니다.

실제 줄과 같은 줄에 줄 번호를 원할 경우 파이프를 사용할 수 있습니다nl도착하다 sed,

nl file.txt | sed -n '10,20p'

nl더 나은 출력을 얻으려면 일부 플래그를 설정해야 할 수도 있습니다 . 숫자와 줄 사이의 구분 기호, 숫자 오른쪽 정렬 등 alias nl='nl -b a -n rz -s "|" -w1'으로 사용할 수 있도록 별칭을 지정했습니다 .|

답변3

만 사용하십시오 sed.

sed -n '10,20{=;p}' file.txt | sed '{N; s/\n/ /}'
  • N;sed패턴 공간에 다음 줄을 추가하라고 지시하므로 sed이제 이 두 줄이 처리되고 있습니다.
  • s/\n/ /개행 문자를 공백으로 대체하여 두 줄을 "병합"합니다.

원천:

설명자알라 알리(소스 2)

답변4

$ < file grep -ne '^' | sed -ne '10,20p'

$ < file sed -e '10,20!d;=;20q' | paste -d: - -

Not so UUOC:
$ cat -n file | sed -nEe '10,20s/^\s*(\S+)\t/\1:/p'

$ perl -lne 's/^/$.:/;
    print if 10..20;
    last  if 20..20;
' file 

관련 정보