Linux

ラベル行のある複数ファイルを1ファイルにマージするコマンド

投稿日:

1. テーマ

以下の 3つのテキストファイル(CSVファイル)をこの順番で結合する」を実現する Linux コマンドを紹介します。

foo1.csv

Title, Author, Price
AAAAA, BBBBB, 10000
CCCCC, DDDDD, 20000

foo2.csv

Title, Author, Price
EEEEE, FFFFF, 30000
GGGGG, HHHHH, 40000

foo3.csv

Title, Author, Price
IIIII, JJJJJ, 50000
KKKKK, LLLLL, 60000

※ 3ファイルともに、最後の行で改行しています。

2つ目以降のファイルのラベル行をどう除外するか?がポイントです。

2. コマンド紹介

いろいろとやり方はあると思うのですが、本記事では以下のコマンドを紹介します。

{ cat foo1.csv; sed '1d' foo2.csv; sed '1d' foo3.csv; } > foo.csv

foo.csv というファイルを生成しています。

シェルスクリプトファイルに記述するとこんな感じです。改行やインデントにより、少し見やすくしてあります。

#! /usr/bin/sh

{ \
  cat      foo1.csv; \
  sed '1d' foo2.csv; \
  sed '1d' foo3.csv; \
} > foo.csv

基本的には各ファイルを出力した結果を、そのまま foo.csv ファイルにしているだけですが、ラベル行が必要ない 2つ目, 3つ目のファイルは、sed コマンドで1行目を削除しています。

生成されたファイルの内容は以下になります。

Title, Author, Price
AAAAA, BBBBB, 10000
CCCCC, DDDDD, 20000
EEEEE, FFFFF, 30000
GGGGG, HHHHH, 40000
IIIII, JJJJJ, 50000
KKKKK, LLLLL, 60000

3. おわりに

Linux のコマンドを使いこなすと、テキスト処理に強くなります。

4. 参考

📂-Linux

執筆者:labo


comment

メールアドレスが公開されることはありません。

関連記事

Linux

Linux のコマンドラインで発生するビープ音を消す

Linux のコマンドでビープ音を消す方法を紹介します。

Linux

Ubuntu: タブ補完が効かなくなった場合の対処法 (bash)

Ubuntu: タブ補完が効かなくなった場合の対処法 (bash)について説明します。

docker

docker run コマンドのパターン覚書

docker run コマンドのパターン覚書です。

Linux

コマンドラインからメールを送信する方法

Linux (や Mac) のターミナルエミュレータ上からメールを送信するコマンドを紹介します。 目次1. sendmail2. mail3. telnet4. おわりに 1. sendmail se …

SELinux

Webサーバーがサイトの構成ファイルを上書きできない問題に対応する(SELinuxが原因の場合)

目次1. はじめに2. 前提3. CentOS 7 の SELinux4. 対応手順5. おわりに参考 1. はじめに Webサイトによっては、そのWebサイトを構成しているファイルを自分で更新する場 …