Linux の行結合

LinuxLinuxBeginner
今すぐ練習

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

はじめに

Linux オペレーティングシステムは、強力なテキスト処理ツールを提供しており、ユーザーは複数のファイルからのデータを効率的に操作および結合することができます。そのようなツールの 1 つが paste コマンドで、異なるファイルの行を横並びに結合します。別々のソースからのデータを結合するこの機能は、データ分析、設定管理、およびレポート生成に不可欠です。

この実験では、paste コマンドを使用して、さまざまな方法で異なるファイルの行を結合する方法を学びます。コマンドの基本機能を探索し、結合された列間の区切り文字をカスタマイズする方法を学び、ファイルを順次処理する方法を理解します。これらのスキルは、Linux 環境での効果的なデータ処理に不可欠です。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/paste("Line Merging") subgraph Lab Skills linux/echo -.-> lab-271349{{"Linux の行結合"}} linux/cat -.-> lab-271349{{"Linux の行結合"}} linux/cd -.-> lab-271349{{"Linux の行結合"}} linux/paste -.-> lab-271349{{"Linux の行結合"}} end

paste コマンドの基本的な使い方

Linux の paste コマンドは、複数のファイルの行を水平方向に結合(並列結合)するために使用されます。これは、別々のファイルに保存されている関連データを結合する必要がある場合に特に有用です。

まず、すべての操作を行うプロジェクトディレクトリに移動しましょう。

cd ~/project

次に、paste コマンドを実演するためにいくつかのサンプルファイルを作成する必要があります。まず、温度データを含むファイルを作成しましょう。

echo "Temperature" > temperatures.txt

このコマンドは、echo を使用して「Temperature」という単語を temperatures.txt という名前のファイルに書き込みます。> 記号は、echo コマンドの出力をファイルにリダイレクトします。ファイルが存在しない場合は作成し、存在する場合は上書きします。

次に、さまざまな大気条件を含む別のファイルを作成しましょう。

echo -e "Pressure\nHumidity\nWind_Speed" > conditions.txt

このコマンドでは、echo とともに -e オプションを使用して、バックスラッシュエスケープを解釈します。\n は改行文字を表すため、このコマンドは「Pressure」、「Humidity」、「Wind_Speed」の 3 行からなるファイルを作成します。

両方のファイルが正しく作成されたことを確認するために、内容を確認しましょう。

cat temperatures.txt

これにより、以下のように表示されるはずです。

Temperature

次に、条件ファイルを確認しましょう。

cat conditions.txt

これにより、以下のように表示されるはずです。

Pressure
Humidity
Wind_Speed

これでファイルが準備できましたので、paste コマンドを使用してこれらを横並びに結合しましょう。

paste temperatures.txt conditions.txt

出力は次のようになるはずです。

Temperature      Pressure
                Humidity
                Wind_Speed

paste コマンドは、ファイルを 1 行ずつ結合し、各行で temperatures.txt の内容を conditions.txt の内容の前に配置していることに注意してください。列間の区切り文字として、タブ文字がデフォルトで使用されます。

temperatures.txt には 1 行しかないため、conditions.txt の残りの行は、temperatures.txt の内容があるべき場所に空白が表示されます。

この paste の基本的な使い方は、異なるファイルからのデータを水平方向に結合する方法を示しており、別々の列ファイルから表形式のデータを作成するのに役立ちます。

paste でカスタム区切り文字を使用する

デフォルトでは、paste コマンドは結合された列間の区切り文字としてタブ文字を使用します。ただし、-d オプションを使用して別の区切り文字を指定することができ、これは CSV ファイルの作成、カスタム形式のデータの作成、または他のツール用のデータの準備に役立ちます。

カスタム区切り文字の使用を実演するために、日付情報を含む新しいファイルを作成しましょう。

echo -e "Date\n2023-04-01\n2023-04-02\n2023-04-03" > dates.txt

これにより、ヘッダー「Date」と 3 つの日付の合計 4 行からなるファイルが作成されます。

この新しいファイルの内容を確認しましょう。

cat dates.txt

以下のように表示されるはずです。

Date
2023-04-01
2023-04-02
2023-04-03

次に、デフォルトのタブではなくコンマを区切り文字として使用して、3 つのファイルをすべて結合しましょう。

paste -d ',' temperatures.txt conditions.txt dates.txt

-d オプションの後にコンマを指定することで、列間の区切り文字としてコンマを使用することを指定しています。このコマンドは、3 つのファイルを横並びに結合し、各ファイルの値をコンマで区切ります。

出力は次のようになるはずです。

Temperature,Pressure,Date
,Humidity,2023-04-01
,Wind_Speed,2023-04-02
,,2023-04-03

2 行目から 4 行目の最初の列に空白の値があることに注意してください。これは、temperatures.txt には 1 行しかないためです。同様に、4 行目の 2 番目の列に空白の値があるのは、conditions.txt には 3 行しかないためです。

区切り文字として任意の文字を使用することができます。たとえば、コロンを使用してみましょう。

paste -d ':' temperatures.txt conditions.txt dates.txt

出力は次のようになるはずです。

Temperature:Pressure:Date
:Humidity:2023-04-01
:Wind_Speed:2023-04-02
::2023-04-03

このように区切り文字を選択する際の柔軟性により、paste コマンドは、データベースやスプレッドシートへのインポート用のデータの準備など、特定の要件を満たすためのデータ形式設定に汎用的なツールとなっています。

paste を使った逐次結合

これまで、paste コマンドを使ってファイルを水平方向に結合し、異なるファイルの内容を横並びに配置してきました。しかし、paste-s オプションを使ってファイルを逐次的に(一つずつ順番に)結合することもできます。これは、ファイルの複数行を 1 行に変換したい場合や、各ファイルを個別に処理したい場合に便利です。

すでに作成したファイルを使って逐次結合を実演しましょう。

paste -s temperatures.txt

-s オプションは、paste に次のファイルに移る前に各ファイル内の行を逐次的に結合するよう指示します。temperatures.txt には 1 行しかないため、出力は変わらないかもしれません。

Temperature

複数行を持つ conditions.txt ファイルで試してみましょう。

paste -s conditions.txt

出力は次のようになるはずです。

Pressure        Humidity        Wind_Speed

conditions.txt のすべての行が 1 行に結合され、値がタブで区切られていることに注意してください。これは、異なるファイルの行を結合する paste のデフォルトの動作とは異なります。

-s とともに -d オプションを使用して、逐次結合のためのカスタム区切り文字を指定することもできます。

paste -s -d ',' conditions.txt

出力は次のようになるはずです。

Pressure,Humidity,Wind_Speed

paste -s に複数のファイルを指定すると、各ファイルが個別に処理され、各ファイルに対して別々の出力行が生成されます。

paste -s temperatures.txt conditions.txt dates.txt

出力は次のようになるはずです。

Temperature
Pressure        Humidity        Wind_Speed
Date    2023-04-01      2023-04-02      2023-04-03

見ての通り、1 行目は temperatures.txt の結合内容(ただ 1 行)、2 行目は conditions.txt の結合内容、3 行目は dates.txt の結合内容です。

-s-d オプションを組み合わせて、各ファイルに異なる区切り文字を指定することもできます。たとえば:

paste -s -d ',:\n' temperatures.txt conditions.txt dates.txt

-d ',:\n' オプションは 3 つの区切り文字を指定しています。最初のファイルにはコンマ、2 番目のファイルにはコロン、3 番目のファイルには改行(次の行に移動するだけ)です。出力は次のようになるはずです。

Temperature
Pressure:Humidity:Wind_Speed
Date    2023-04-01      2023-04-02      2023-04-03

paste を使った逐次結合は、データのレイアウトを変換できる強力な機能であり、さまざまな処理要件に適しています。

まとめ

この実験では、Linux の paste コマンドを使って複数のファイルの行をさまざまな方法で結合する方法を学びました。

  1. デフォルトのタブ区切り文字でファイルを水平方向に結合する paste の基本的な使い方
  2. ファイルを結合する際に -d オプションを使ってカスタム区切り文字を指定する方法
  3. ファイル内の行を結合する逐次結合に -s オプションを使う方法

これらのスキルは、Linux 環境でのデータ処理とテキスト操作において基本的なものです。paste コマンドは以下の用途に特に役立ちます。

  • 個別の列ファイルから表形式のデータを作成する
  • データベースやスプレッドシートにインポートするためのデータを整形する
  • データを垂直レイアウトから水平レイアウトに、またはその逆に変換する
  • 他の Linux コマンドでさらに処理するためのデータを準備する

paste コマンドを習得することで、Linux コマンドラインのツールキットに強力なツールが追加され、テキストデータを効率的に操作および処理することができるようになります。