Linux 行番号付け

LinuxLinuxBeginner

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux の nl コマンドを使用してテキストファイルに行番号を付ける方法を学びます。行番号付けは、設定ファイル、コード、または特定の行を参照する必要がある任意のテキストドキュメントを扱う際に便利な手法です。nl コマンドは、番号付け形式をカスタマイズするための様々なオプションを提供し、さまざまなドキュメント作成や処理のニーズに対応できる柔軟なツールです。

この実験の終わりまでに、テキストファイルに基本的および高度な行番号付け手法を適用する方法を理解し、Linux でのテキスト処理スキルが向上します。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 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 コマンドのデフォルトの動作です。

この番号付きの出力を新しいファイルに保存したい場合は、> 記号を使用して出力をリダイレクトできます。

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: 左寄せ、先頭にゼロを付けない
  • rn: 右寄せ、先頭にゼロを付けない
  • rz: 右寄せ、先頭にゼロを付ける

先頭にゼロを付けた右寄せの番号を試してみましょう。

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)
  • 右寄せで先頭にゼロを付ける形式を使用します (-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 コマンドは一度に複数のファイルを処理することができます。まず、2 つ目のファイルを作成しましょう。

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

2 つ目のファイルでは行番号がリセットされていることに注意してください。ファイル間で連続した番号付けを行いたい場合は、-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 を使用してログに行番号を追加する方法を見てみましょう。

## First, create a sample log file
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: ' を使用します。
  • 先頭にゼロを付けない左寄せの番号 -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 環境における効率的なファイル操作とデータ処理の基礎を形成することを忘れないでください。