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