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

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

関連記事

Let's Encrypt

Let’s Encrypt でワイルドカードを使う

手持ちの CentOS 7 に入れてある certbot パッケージが バージョン 0.22.0 になり、Let’s Encrypt のワイルドカードに対応しましたので試してみました。 目 …

Let's Encrypt

Let’s Encrypt で ‘-0001’ がついた証明書データを削除する方法

目次1. 問題点2. 対応方法念のため、存在している証明書を全て表示します。いらない証明書データを削除する3. 間違えて生成した ‘-0001’ の方を Webサイトで使用して …

CentOS

CentOS 8 標準の Apache と PHP の関係について

CentOS 8 における Apache と PHP の関係について説明します。

Linux

Ubuntu ではユーザー名に大文字が使えません(デフォルトでは)

Ubuntu で ユーザーを追加するには adduser というコマンドを使います。 例えば、”foo” という名前のユーザーを追加するには、以下のコマンドになります。 $ a …

Google App Engine

Ubuntu 18.04 (WSL) に、Google Cloud SDK をインストールする

Ubuntu 18.04 (WSL) に、Google Cloud SDK をインストールする手順を紹介します。