はじめに
こんにちは!今回はpasteコマンドについて解説します。
pasteは複数のファイルの行を横方向に結合するコマンドです。cutコマンドの逆バージョンって感じですね。縦に並んだ複数のリストを横に並べたい時に超便利です!
テキスト処理でめっちゃ活躍するコマンドなので、これを機にマスターしちゃいましょう!
pasteコマンドとは
pasteは、複数のファイルの対応する行を指定された区切り文字で結合して出力する外部コマンドです。
例えば、ファイルAに名前のリストが縦に並んでいて、ファイルBに年齢のリストが縦に並んでいる場合、pasteを使えば両方を横に並べて「名前\t年齢」という形式に変換できます。
基本構文
|
|
複数のファイルを指定して、対応する行を結合します。
主なオプション
| オプション | 説明 |
|---|---|
-d |
区切り文字を指定(デフォルトはタブ) |
-s |
各ファイルの行を1行に結合 |
-z |
出力をNUL文字で区切る(GNU拡張) |
使用例
例1: 2つのファイルを横に結合
テストファイルを作成します。
|
|
実行結果:
|
|
2つのファイルの行を横に結合します。デフォルトではタブで区切られます。
例2: 区切り文字を指定
|
|
実行結果:
|
|
-dオプションでコンマを区切り文字に指定します。
例3: 複数の区切り文字を指定
|
|
実行結果:
|
|
複数のファイルを結合する時、指定した区切り文字で結合されます。
例4: 各ファイルの行を1行に結合
|
|
実行結果:
|
|
-sオプションで1つのファイルの行を1行に結合します。
例5: 複数ファイルをそれぞれ1行に
|
|
実行結果:
|
|
複数ファイルを指定すると、ファイルごとに行を結合します。
例6: 標準入力を使用
|
|
実行結果:
|
|
ハイフン-で標準入力を表します。
例7: 空行を含むファイルの結合
|
|
実行結果:
|
|
空行もそのまま結合されます。
例8: 複数の区切り文字を順番に使用
|
|
実行結果:
|
|
-dに複数の文字を指定すると、順番に使用されます。
例9: リストをCSV形式に変換
|
|
実行結果:
|
|
複数のテキストリストをCSV形式に変換できます。
例10: 複数ファイルを行番号付きで結合
|
|
実行結果:
|
|
プロセス置換を使った高度な例です。
Tips・注意点
cut コマンドとセット
pasteはcutの逆操作です。cutで列を抽出した後、複数のファイルをpasteで結合するパターンがよく使われます。
|
|
行数が異なる場合
ファイルの行数が異なる場合、短いファイルの方に合わせて結合されます。
|
|
タブとスペースの違い
デフォルトはタブで区切られます。スペースが必要な場合は明示的に指定しましょう。
|
|
実践的な使い方
CSVファイルのカラム入れ替え
|
|
複数のカラムの順序を入れ替えたい時に便利です。
ログファイルのマージ
|
|
複数のログファイルを横に並べて比較する時に使えます。
データフォーマットの変換
|
|
複数の単一列ファイルを複数列のCSVに変換できます。
まとめ
pasteコマンドのポイント:
- 複数ファイルの行を横に結合する基本コマンド
-dオプション: 区切り文字を指定(タブがデフォルト)-sオプション: ファイルの行を1行に結合- ハイフン
-で標準入力を表現 cutコマンドと組み合わせてデータ処理が強力- よく使う組み合わせ:
paste -d ',' file1 file2、paste -s file
縦のデータを横に並べたい時はpasteを使いましょう!