2021. 8. 12. 12:10ㆍLinux/Command-line
1. nl
number lines of files
nl [OPTION]... [FILE]...
파일안의 문장 맨 앞에 줄번호(line numbers)를 붙여서 출력합니다.
기본적으로 공백에는 줄번호를 붙이지 않습니다.
※ 단, space는 문자로 인식하기 때문에, 줄번호가 붙습니다.
2. Option
2.1. 자주 쓰는 옵션
- -b, --body-numbering=STYLE
- 기본값:
-bt
- 줄번호를 설정할 기준을 설정합니다.
- 기본값:
- -n, --number-format=FORMAT
- 기본값:
-nrn
- 줄번호를 설정할 형식을 설정합니다.
- 정렬방향(왼쪽정렬, 오른쪽정렬)과 leading zero 설정 유무를 설정합니다.
- 기본값:
- -s, --number-separator=STRING
- 줄번호와 문장 사이의 문자열을 변경합니다.
-b 옵션에 설정하는 옵션으로, 줄번호를 설정할 기준을 정의하는 옵션입니다.
기본값은 -bt
입니다.
- a
- (공백을 포함한) 모든 라인에 줄번호를 붙입니다.
- t
- 공백에는 줄번호를 붙이지 않습니다.
- n
- 모든 라인에 줄번호를 붙이지 않습니다.
- p문자열
- 문자열이 포함된 라인에만 줄번호를 붙입니다.
-n 옵션에 설정하는 옵션으로, 정렬방향(왼쪽정렬, 오른쪽정렬)과 leading zero 설정 유무를 설정합니다.
기본값은 -nrn
입니다.
- ln
- 왼쪽 정렬, leading zero 없음
- rn
- 오른쪽 정렬, leading zero 없음
- rz
- 오른쪽 정렬, leading zero 있음
2.2. 기타 옵션
자주 이용되지 않지만
- -i, --line-increment=NUMBER
- 줄번호 증가량을 설정합니다.
- -l, --join-blank-lines=NUMBER
- NUMBER 이상의 빈줄이 있을 경우, NUMBER 이상의 빈줄을 한줄로 간주합니다.(= NUMBER보다 적은 빈줄은 줄번호 설정하지 않습니다.)
-b a
옵션과 함께 사용해야 합니다.
- -v, --starting-line-number=NUMBER
- 맨 첫번째 줄번호 수를 지정합니다.
- 기본값은 1입니다.
- -w, --number-width=NUMBER
- 기본값:
-w6
- 줄번호를 출력할 column을 지정합니다. 기본적으로 6번째칸에 오른쪽정렬로 표기됩니다.
- 오른쪽 정렬일때에만 적용되는 옵션입니다. (= 왼쪽정렬(
-nrn
)일 때에는 이 옵션은 무시됩니다.)
- 기본값:
3. 예제
3.1. -b
3.1.1. 기본
-b
옵션을 생략할 경우, 기본적으로 -bt
로 설정됩니다.
nl melon.txt
1 grape 10e100 nnnnn 2 abcde 230 mmmmm 3 apple -infinity fifif 4 ABCDE 999e-34 dmmmn 5 violin 33 test 6 ABCDE infinity dmmmn 7 test 4.2 test 8 002 9 98 10 098 11 GRAPE 11.5 dmmmn 12 lily NaN aaaaa
공백에는 줄번호가 붙지 않습니다.
a
옵션을 붙일 경우 공백에도 줄번호를 붙입니다.
nl -ba melon.txt
1 grape 10e100 nnnnn 2 abcde 230 mmmmm 3 apple -infinity fifif 4 5 ABCDE 999e-34 dmmmn 6 violin 33 test 7 ABCDE infinity dmmmn 8 test 4.2 test 9 10 002 11 98 12 098 13 GRAPE 11.5 dmmmn 14 15 lily NaN aaaaa 16
n
옵션을 붙일 경우 모든 라인에 줄번호를 붙이지 않습니다.
nl -bn melon.txt
grape 10e100 nnnnn abcde 230 mmmmm apple -infinity fifif ABCDE 999e-34 dmmmn violin 33 test ABCDE infinity dmmmn test 4.2 test 002 98 098 GRAPE 11.5 dmmmn lily NaN aaaaa
특정 문자열이 포함된 라인에만 줄번호를 붙일 수 있습니다.
nl -bpprivate TokenClass.java | tail -n 20
return ResponseEntity.ok().body(new TokenResponse(jwt)); } @Getter @Setter @Schema(name = "TokenRequest") public static class TokenRequest { 5 private String apikey; 6 @Schema(description = "현재시각(단위: millisecond)") private String nonce; } @Getter public class TokenResponse extends BasicResponse { 7 @Schema(description = "JWT 토큰") private String token; public TokenResponse(String token) { this.token = token; } } }
3.2. -n
-n옵션은 format을 지정하는 옵션입니다.
3.2.1. 기본 (= -nrn
)
오른쪽 정렬, leading zero 없음이 기본값입니다.
nl /etc/passwd | head -n 5
1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
-nln
)nl -nln /etc/passwd | head -n 5
1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
-nrz
)nl -nrz /etc/passwd | head -n 5
000001 root:x:0:0:root:/root:/bin/bash 000002 bin:x:1:1:bin:/bin:/sbin/nologin 000003 daemon:x:2:2:daemon:/sbin:/sbin/nologin 000004 adm:x:3:4:adm:/var/adm:/sbin/nologin 000005 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
3.3. -s
줄번호 뒤에 붙일 문자열을 설정합니다.
nl /etc/passwd | head -n 5
1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
기본값은 위와 같습니다.
nl -s '...' /etc/passwd | head -n 5
1...root:x:0:0:root:/root:/bin/bash 2...bin:x:1:1:bin:/bin:/sbin/nologin 3...daemon:x:2:2:daemon:/sbin:/sbin/nologin 4...adm:x:3:4:adm:/var/adm:/sbin/nologin 5...lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
다른 문자열로 바꾼 결과값입니다.
3.4. -i
줄번호 증가율을 변경하는 옵션입니다.
nl Hello.java
1 public class Hello { 2 public static void main(String[] args) { 3 System.out.println("hello"); 4 } 5 }
기본적으로는 1씩 증분
nl -i 3 Hello.java
1 public class Hello { 4 public static void main(String[] args) { 7 System.out.println("hello"); 10 } 13 }
3씩 줄번호가 증분합니다.
3.5. -l
-l
옵션은 여러줄의 공백을 한줄로 줄여주는 옵션입니다.
따라서, 공백도 줄번호를 설정하고 있는 경우에 사용할 수 있는 옵션입니다.
아래와 같은 문서가 있다고 할때
nl -ba nl-test.txt
1 2 abcde 3 f999 4 5 fhfj 6 7 8 9 idjfh 10 11 fjdh 12 hhff 13 14
-l2
라고 하면, 2줄이상 공백이 있는 경우에만 줄번호를 매기기 때문에 아래와 같은 결과가 나오고
nl -ba -l2 nl-test.txt
1 abcde 2 f999 3 fhfj 4 5 idjfh 6 fjdh 7 hhff 8
-l3
라고 하면, 3줄이상 공백이 있는 경우에만 줄번호를 매기기 때문에 아래와 같은 결과가 나옵니다.
nl -ba -l3 nl-test.txt
1 abcde 2 f999 3 fhfj 4 5 idjfh 6 fjdh 7 hhff
3.6. -v
-v 옵션으로 줄번호 시작숫자를 변경할 수 있습니다.
nl /etc/passwd | head -n 5
1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
nl -v10 /etc/passwd | head -n 5
10 root:x:0:0:root:/root:/bin/bash 11 bin:x:1:1:bin:/bin:/sbin/nologin 12 daemon:x:2:2:daemon:/sbin:/sbin/nologin 13 adm:x:3:4:adm:/var/adm:/sbin/nologin 14 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
3.6. -w
줄번호를 출력할 column을 지정하는 옵션으로, 오른쪽 정렬일 때 적용할 수 있는 옵션입니다.
기본적으로 6번째칸에 오른쪽정렬로 표기됩니다.
3.6.1. 기본(= -w6
)
nl TokenClass.java | head -n 5
1 package me.jiniworld.demo.controllers; 2 import java.io.UnsupportedEncodingException; 3 import java.util.Calendar; 4 import java.util.Date;
3.6.2. -w2
nl -w2 TokenClass.java | head -n 5
1 package me.jiniworld.demo.controllers; 2 import java.io.UnsupportedEncodingException; 3 import java.util.Calendar; 4 import java.util.Date;
3.6.3. -w4
nl -w4 TokenClass.java | head -n 5
1 package me.jiniworld.demo.controllers; 2 import java.io.UnsupportedEncodingException; 3 import java.util.Calendar; 4 import java.util.Date;
3.6.3. -nrz 옵션과 함께
만일 -nrz
옵션과 함께 사용한다면??
nl -nrz -w4 TokenClass.java | head -n 5
0001 package me.jiniworld.demo.controllers; 0002 import java.io.UnsupportedEncodingException; 0003 import java.util.Calendar; 0004 import java.util.Date;
nl -nrz -w2 TokenClass.java | head -n 5
01 package me.jiniworld.demo.controllers; 02 import java.io.UnsupportedEncodingException; 03 import java.util.Calendar; 04 import java.util.Date;
w는 6이상의 수도 설정할 수 있습니다.
nl -nrz -w8 TokenClass.java | head -n 5
00000001 package me.jiniworld.demo.controllers; 00000002 import java.io.UnsupportedEncodingException; 00000003 import java.util.Calendar; 00000004 import java.util.Date;
++
- Linux nl command Example
- Linux nl command Tutorial
- nl command in Linux with example
'Linux > Command-line' 카테고리의 다른 글
[Command-line] free 명령어로 메모리 사용량 조회하기 (0) | 2022.04.21 |
---|---|
[Command-line] uniq command in Linux (0) | 2022.02.22 |
ssh 터널링을 이용한 원격 private database 접속 (0) | 2021.03.03 |
[Command-line] sort 명령어를 이용한 텍스트 정렬 (0) | 2021.01.12 |
[Command-line] tr 명령어를 이용한 character set 변환 및 삭제 (0) | 2021.01.05 |