반달가면 이글루에서 백업 - http://bahndal.egloos.com/611783
화면에 결과를 출력할 때 행번호를 같이 표시할 필요하 있다면 nl을 이용할 수 있다. 아래의 예시를 보자.
cat my_file.txt | nl
1 abc
2 def
...
nl에서 아무련 옵션을 주지 않았을 경우, 6칸을 행번호 폭으로 할당하고 행번호와 출력 내용은 탭(tab)으로 구분된다. 만약 행번호의 폭을 1칸으로 하려면 -w 옵션을 사용하고, 구분자를 바꾸고 싶다면 -s 옵션을 사용하면 되겠다.
# 행번호 폭 1칸, 구분자 콜론(:)
cat my_file.txt | nl -w 1 -s ":"
1:abc
2:def
...
9:abc
10:def
...
출력 행수가 많아서 행번호 자리수가 -w에서 지정한 폭을 넘어갈 경우에는 당연히 그만큼 폭을 더 할당하게 된다. 위의 예시에서는 폭을 1칸으로 지정했지만 행번호가 10이 넘어가면서부터 2칸이 되었다.
행번호를 출력하기 위한 또 한가지 방법은 awk를 이용하는 것이다. awk에 행번호에 대응하는 내부 변수 NR이 있으므로 이것을 활용하면 되겠다. awk에서 print 명령으로 행번호(NR)와 구분자, 그리고 결과 행 전체($0)를 출력하게 하면 된다.
# 행번호 출력, 구분자 탭(tab)
cat my_file.txt | awk '{ print NR "\t" $0 }'
# 행번호 출력, 구분자 콜론(:)
cat my_file.txt | awk '{ print NR ":" $0 }'
awk를 사용할 경우에는 printf를 이용해서 표시 형식을 좀 더 구체적으로 지정하는 것도 가능.
# 행번호를 폭 3칸으로 출력, 구분자 콜론(:)
cat my_file.txt | awk '{ printf "%3d:%s\n", NR, %0 }'
'bash script' 카테고리의 다른 글
[bash: grep] 파일 안에 섞인 바이너리(binary) 데이터 제거 (1) | 2023.09.04 |
---|---|
[bash: cd] 디렉토리 내용 새로 고침(refresh) (0) | 2023.09.04 |
[bash: sed] 문자열 대체 명령 여러개를 파일에 저장해서 활용하기 (0) | 2023.08.29 |
[bash: ((] 연관 배열(associative array)에 저장된 정수 계산 (0) | 2023.08.29 |
[bash: while, if] 복잡한 조건에 따른 개별 작업 이후 공통된 작업이 있는 경우 (0) | 2023.08.29 |