はじめに
この実験では、Linux の nl コマンドを使用してテキストファイルに行番号を付ける方法を学びます。行番号付けは、設定ファイル、コード、または特定の行を参照する必要がある任意のテキストドキュメントを扱う際に便利な手法です。nl コマンドは、番号付け形式をカスタマイズするための様々なオプションを提供し、さまざまなドキュメント作成や処理のニーズに対応できる柔軟なツールです。
この実験の終わりまでに、テキストファイルに基本的および高度な行番号付け手法を適用する方法を理解し、Linux でのテキスト処理スキルが向上します。
サンプルテキストファイルの作成
このステップでは、この実験全体で行番号付けの練習に使用するサンプルテキストファイルを作成します。
まず、現在の作業ディレクトリを確認しましょう。デフォルトでは、/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 を終了するには、以下の手順を実行します。
Ctrl+Xを押します(終了する)Yを押します(変更を保存することを確認する)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 環境における効率的なファイル操作とデータ処理の基礎を形成することを忘れないでください。



