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】Info マニュアルの基礎知識と、閲覧に便利な pinfoコマンド

目次1. オンラインマニュアル (manコマンド)と Infoマニュアル (infoコマンド)2. Info マニュアルの基礎知識Info マニュアルのデータpinfo コマンドウェブ版もあります3. …

docker

CentOS 上の Docker にウェブサーバーを入れて80番以外のポートで公開することができない問題【未解決】

CentOS 7 上の Dockerコンテナ にウェブサーバーを入れた場合、80番以外のポートで公開することはできないようです。 例えば、 まず、firewall-cmd コマンドで 8080番ポート …

Linux

sed コマンドの基本形式

sed コマンドの基本的な指定形式について説明します。

Linux

tree コマンドの結果を適切に表示する

tree コマンドの結果を適切に表示する方法を紹介します。

SELinux

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

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