리눅스 줄 번호 매기기

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 의 nl 명령어를 사용하여 텍스트 파일에 줄 번호를 추가하는 방법을 배우게 됩니다. 줄 번호 매기기는 구성 파일, 코드 또는 특정 줄을 참조해야 하는 모든 텍스트 문서를 다룰 때 유용한 기술입니다. nl 명령어는 번호 매기기 형식을 사용자 정의할 수 있는 다양한 옵션을 제공하여, 다양한 문서화 및 처리 요구 사항에 유연하게 사용할 수 있는 도구입니다.

이 랩을 마치면 텍스트 파일에 기본 및 고급 줄 번호 매기기 기술을 적용하는 방법을 이해하게 되어 Linux 에서 텍스트 처리 기술을 향상시킬 수 있습니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

샘플 텍스트 파일 생성

이 단계에서는 이 랩 전체에서 줄 번호 매기기를 연습하는 데 사용할 샘플 텍스트 파일을 생성합니다.

먼저, 현재 작업 디렉토리를 확인해 보겠습니다. 기본적으로 /home/labex/project 디렉토리에 있어야 합니다. pwd 명령어를 사용하여 이를 확인할 수 있습니다.

pwd

다음과 같은 출력이 표시되어야 합니다.

/home/labex/project

이제 nano 텍스트 편집기를 사용하여 sample.txt라는 간단한 텍스트 파일을 생성해 보겠습니다. 다음 명령을 입력하여 nano 를 엽니다.

nano sample.txt

nano 편집기 내에서 다음 내용을 입력합니다.

Linux Commands
-------------
cat - display file contents
ls - list directory contents
cd - change directory
grep - search for patterns
chmod - change file permissions

파일을 저장하고 nano 를 종료하려면 다음을 수행합니다.

  1. Ctrl+X를 누릅니다 (종료).
  2. Y를 누릅니다 (변경 사항 저장 확인).
  3. Enter를 누릅니다 (파일 이름 확인).

이제 파일 내용을 표시하여 파일이 생성되었는지 확인합니다.

cat sample.txt

터미널에 입력한 정확한 텍스트가 표시되어야 합니다.

nl 명령어를 사용한 기본 줄 번호 매기기

이제 샘플 텍스트 파일을 만들었으므로 nl 명령어를 사용하여 줄 번호를 추가하는 방법을 알아보겠습니다. Linux 의 nl 명령어는 파일의 줄에 번호를 매기는 데 사용되며, 참조 목적으로 유용할 수 있습니다.

기본 nl 명령어를 사용하여 샘플 파일의 모든 줄에 번호를 매겨 보겠습니다.

nl sample.txt

다음과 유사한 출력이 표시되어야 합니다.

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions

nl 명령어가 각 줄의 시작 부분에 줄 번호를 추가하는 것을 알 수 있습니다. 이것이 nl 명령어의 기본 동작입니다.

이 번호가 매겨진 출력을 새 파일에 저장하려면 > 기호와 함께 출력 리디렉션 (output redirection) 을 사용할 수 있습니다.

nl sample.txt > numbered_sample.txt

이 명령어는 원본 파일의 줄 번호가 매겨진 버전을 포함하는 numbered_sample.txt라는 새 파일을 생성합니다. 이 새 파일의 내용을 확인해 보겠습니다.

cat numbered_sample.txt

이전과 동일한 번호가 매겨진 출력이 파일에 저장된 것을 볼 수 있습니다.

기본 nl 명령어는 유용하지만, 때로는 줄 번호 매기기가 표시되는 방식을 사용자 정의해야 할 수 있습니다. 다음 단계에서는 몇 가지 사용자 정의 옵션을 살펴보겠습니다.

줄 번호 매기기 형식 사용자 정의

nl 명령어는 줄 번호가 표시되는 방식을 사용자 정의할 수 있는 다양한 옵션을 제공합니다. 이 단계에서는 다양한 요구 사항에 맞게 줄 번호 매기기 형식을 수정하는 방법을 배우게 됩니다.

시작 번호

기본적으로 줄 번호 매기기는 1 부터 시작합니다. -v (시작 값) 옵션을 사용하여 이를 변경할 수 있습니다. 100 부터 시작하는 줄 번호를 매겨 보겠습니다.

nl -v 100 sample.txt > custom_start.txt

결과를 봅니다.

cat custom_start.txt

100 부터 시작하는 줄 번호가 있는 출력이 표시되어야 합니다.

   100  Linux Commands
   101  -------------
   102  cat - display file contents
   103  ls - list directory contents
   104  cd - change directory
   105  grep - search for patterns
   106  chmod - change file permissions

숫자 형식

-n 옵션을 사용하여 숫자 형식을 제어할 수도 있습니다. 형식 지정자에는 다음이 포함됩니다.

  • ln: 왼쪽 정렬, 선행 0 없음
  • rn: 오른쪽 정렬, 선행 0 없음
  • rz: 오른쪽 정렬, 선행 0 포함

선행 0 이 있는 오른쪽 정렬 숫자를 시도해 보겠습니다.

nl -n rz sample.txt > zero_padded.txt

결과를 봅니다.

cat zero_padded.txt

다음과 같은 출력이 표시되어야 합니다.

000001  Linux Commands
000002  -------------
000003  cat - display file contents
000004  ls - list directory contents
000005  cd - change directory
000006  grep - search for patterns
000007  chmod - change file permissions

숫자 필드 너비

-w 옵션을 사용하여 숫자 필드의 너비를 제어할 수 있습니다. 기본적으로 너비는 6 자입니다. 3 으로 설정해 보겠습니다.

nl -w 3 sample.txt > narrow_numbers.txt

결과를 봅니다.

cat narrow_numbers.txt

더 좁은 숫자 필드가 있는 출력이 표시되어야 합니다.

  1  Linux Commands
  2  -------------
  3  cat - display file contents
  4  ls - list directory contents
  5  cd - change directory
  6  grep - search for patterns
  7  chmod - change file permissions

여러 옵션을 결합해 봅니다.

nl -v 10 -w 4 -n rz sample.txt > combined_format.txt

이 명령어는 다음을 수행합니다.

  • 10 부터 번호 매기기 시작 (-v 10)
  • 너비를 4 자로 설정 (-w 4)
  • 오른쪽 정렬 0 으로 채워진 형식 사용 (-n rz)

결합된 결과를 봅니다.

cat combined_format.txt

사용자 정의된 줄 번호 매기기가 표시되어야 합니다.

0010  Linux Commands
0011  -------------
0012  cat - display file contents
0013  ls - list directory contents
0014  cd - change directory
0015  grep - search for patterns
0016  chmod - change file permissions

이러한 사용자 정의 옵션을 통해 문서에서 줄 번호가 표시되는 방식을 유연하게 제어할 수 있습니다.

선택적 줄 번호 매기기

때로는 파일의 모든 줄이 아닌 특정 줄만 번호를 매기고 싶을 수 있습니다. nl 명령어는 특정 기준에 따라 줄을 선택적으로 번호 매기는 옵션을 제공합니다.

빈 줄이 있는 파일 만들기

먼저 빈 줄을 포함하는 새 파일을 만들어 보겠습니다.

nano mixed_content.txt

nano 편집기에서 다음 내용을 입력합니다 (빈 줄 포함).

Section 1: File Operations

cat - display file contents
less - view file content with pagination

Section 2: Navigation

cd - change directory
pwd - print working directory

Section 3: Permissions

chmod - change file permissions
chown - change file ownership

Ctrl+X, Y, Enter를 눌러 파일을 저장합니다.

빈 줄이 아닌 줄만 번호 매기기

기본적으로 nl은 모든 줄에 번호를 매깁니다. 빈 줄이 아닌 줄만 번호를 매기려면 -b t 옵션을 사용합니다.

nl -b t mixed_content.txt > numbered_nonempty.txt

결과를 봅니다.

cat numbered_nonempty.txt

빈 줄이 아닌 줄만 번호가 매겨진 것을 볼 수 있습니다.

     1  Section 1: File Operations

     2  cat - display file contents
     3  less - view file content with pagination

     4  Section 2: Navigation

     5  cd - change directory
     6  pwd - print working directory

     7  Section 3: Permissions

     8  chmod - change file permissions
     9  chown - change file ownership

패턴과 일치하는 줄만 번호 매기기

-b p'PATTERN' 옵션을 사용하여 특정 패턴과 일치하는 줄만 번호를 매길 수도 있습니다. 예를 들어, "Section"이라는 단어가 포함된 줄만 번호를 매기려면 다음과 같이 합니다.

nl -b p'Section' mixed_content.txt > numbered_sections.txt

결과를 봅니다.

cat numbered_sections.txt

"Section"이 포함된 줄만 번호가 매겨진 것을 볼 수 있습니다.

     1  Section 1: File Operations

       cat - display file contents
       less - view file content with pagination

     2  Section 2: Navigation

       cd - change directory
       pwd - print working directory

     3  Section 3: Permissions

       chmod - change file permissions
       chown - change file ownership

구분 기호 사용자 정의

줄 번호와 텍스트 사이의 기본 구분 기호는 탭입니다. -s 옵션을 사용하여 이를 변경할 수 있습니다.

nl -s '. ' mixed_content.txt > custom_separator.txt

결과를 봅니다.

cat custom_separator.txt

줄 번호 뒤에 마침표와 공백이 오는 것을 볼 수 있습니다.

     1. Section 1: File Operations

     2. cat - display file contents
     3. less - view file content with pagination

     4. Section 2: Navigation

     5. cd - change directory
     6. pwd - print working directory

     7. Section 3: Permissions

     8. chmod - change file permissions
     9. chown - change file ownership

이러한 선택적 번호 매기기 옵션을 사용하면 필요한 곳에만 줄 번호를 적용하여 문서를 더 체계적으로 만들고 참조하기 쉽게 만들 수 있습니다.

실용적인 활용 및 고급 사용법

이 마지막 단계에서는 실제 시나리오에서 nl 명령의 몇 가지 실용적인 응용 프로그램과 고급 사용법을 살펴보겠습니다.

여러 파일 번호 매기기

nl 명령어는 여러 파일을 한 번에 처리할 수 있습니다. 두 번째 파일을 만들어 보겠습니다.

nano commands2.txt

다음 내용을 추가합니다.

Additional Linux Commands
------------------------
find - search for files
tar - archive files
ssh - secure shell connection
df - disk free space
top - display system processes

nano 를 저장하고 종료합니다. 이제 두 파일을 함께 번호 매겨 보겠습니다.

nl sample.txt commands2.txt > combined_numbered.txt

결합된 결과를 봅니다.

cat combined_numbered.txt

두 파일이 순차적으로 번호가 매겨진 것을 볼 수 있습니다.

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions
     1  Additional Linux Commands
     2  ------------------------
     3  find - search for files
     4  tar - archive files
     5  ssh - secure shell connection
     6  df - disk free space
     7  top - display system processes

두 번째 파일에 대해 줄 번호가 다시 시작되는 것을 확인합니다. 파일 전체에서 연속적인 번호 매기기를 원하면 -i 옵션을 사용할 수 있습니다.

nl -i 1 -n ln sample.txt commands2.txt > continuously_numbered.txt

결과를 봅니다.

cat continuously_numbered.txt

두 파일 전체에서 연속적인 번호 매기기를 볼 수 있습니다.

     1  Linux Commands
     2  -------------
     3  cat - display file contents
     4  ls - list directory contents
     5  cd - change directory
     6  grep - search for patterns
     7  chmod - change file permissions
     8  Additional Linux Commands
     9  ------------------------
    10  find - search for files
    11  tar - archive files
    12  ssh - secure shell connection
    13  df - disk free space
    14  top - display system processes

다른 명령어와 결합

nl 명령어는 파이프를 사용하여 다른 Linux 명령어와 결합할 수 있습니다. 예를 들어, 명령 출력의 줄에 번호를 매길 수 있습니다.

ls -l /etc | nl > numbered_ls_output.txt

결과를 봅니다.

cat numbered_ls_output.txt

ls -l /etc의 출력에 줄 번호가 추가된 것을 볼 수 있습니다.

실제 사용 사례: 로그 파일에 줄 번호 추가

줄 번호 매기기는 로그 파일을 분석할 때 특히 유용합니다. nl을 사용하여 로그에 줄 번호를 추가하는 방법을 살펴보겠습니다.

## 먼저, 샘플 로그 파일을 만듭니다.
cat > sample_log.txt << EOF
[2023-07-01 10:15:22] INFO: System startup
[2023-07-01 10:15:24] INFO: Loading configuration
[2023-07-01 10:15:25] WARNING: Config file is outdated
[2023-07-01 10:15:28] ERROR: Failed to connect to database
[2023-07-01 10:15:30] INFO: Retrying database connection
[2023-07-01 10:15:33] INFO: Database connection established
[2023-07-01 10:15:35] INFO: System ready
EOF

이제 대괄호 안에 줄 번호가 포함된 사용자 정의 형식으로 줄 번호를 추가합니다.

nl -s ' [Line: ' -n ln -w 2 -b a sample_log.txt | sed 's/$/]/' > numbered_log.txt

이 명령어는 다음을 수행합니다.

  • 사용자 정의 구분 기호 사용 -s ' [Line: '
  • 선행 0 이 없는 왼쪽 정렬 숫자 사용 -n ln
  • 너비를 2 자로 설정 -w 2
  • 모든 줄에 번호 매기기 -b a
  • sed를 사용하여 각 줄의 끝에 닫는 대괄호 추가

결과를 봅니다.

cat numbered_log.txt

대괄호 안에 줄 번호가 있는 로그 항목을 볼 수 있습니다.

 1 [Line: [2023-07-01 10:15:22] INFO: System startup]
 2 [Line: [2023-07-01 10:15:24] INFO: Loading configuration]
 3 [Line: [2023-07-01 10:15:25] WARNING: Config file is outdated]
 4 [Line: [2023-07-01 10:15:28] ERROR: Failed to connect to database]
 5 [Line: [2023-07-01 10:15:30] INFO: Retrying database connection]
 6 [Line: [2023-07-01 10:15:33] INFO: Database connection established]
 7 [Line: [2023-07-01 10:15:35] INFO: System ready]

이 형식은 문서 또는 토론에서 특정 로그 항목을 참조할 때 매우 유용할 수 있습니다.

이제 Linux 에서 기본 및 고급 줄 번호 매기기를 위해 nl 명령을 사용하는 방법에 대한 이해가 높아졌습니다. 이 기술은 텍스트 파일, 로그, 코드 및 문서를 사용할 때 유용할 것입니다.

요약

이 랩에서는 Linux nl 명령을 사용하여 텍스트 파일에 줄 번호를 추가하는 방법을 배웠습니다. 다음은 다룬 주요 개념에 대한 요약입니다.

  • 간단한 nl 명령을 사용한 기본 줄 번호 매기기
  • -v (시작 값), -n (번호 형식) 및 -w (너비) 와 같은 옵션을 사용하여 줄 번호 매기기 형식 사용자 정의
  • -b t (비어 있지 않은 줄) 및 -b p'PATTERN' (패턴 일치) 과 같은 옵션을 사용하여 선택적으로 줄 번호 매기기
  • -s 옵션을 사용하여 줄 번호와 텍스트 사이의 구분 기호 사용자 정의
  • 여러 파일 작업 및 파일 전체에서 연속적인 번호 매기기 생성
  • 파이프를 사용하여 nl을 다른 명령어와 결합
  • 더 쉬운 참조를 위해 로그 파일 번호 매기기와 같은 실용적인 응용 프로그램

nl 명령어는 Linux 에서 텍스트 처리에 유용한 도구이며, 특히 문서, 코드 검토 또는 로그 파일을 분석할 때 특정 줄을 참조해야 할 때 유용합니다. nl의 다양한 옵션을 마스터함으로써 텍스트 기반 데이터의 가독성과 사용성을 향상시키는 강력한 기술을 갖게 되었습니다.

Linux 여정을 계속 진행하면서 nl과 같은 텍스트 처리 명령어가 다른 도구와 결합되어 Linux 환경에서 효율적인 파일 조작 및 데이터 처리의 기반을 형성한다는 것을 기억하십시오.