csvファイル等にヘッダー行を追加したい

ubuntu_logo Linux
ubuntu_logo

ヘッダーのないcsvファイルに、ヘッダーを追加したい場合はsedコマンドを利用する方法やechoコマンドcatコマンドを利用する方法があります

sed コマンドを使う方法

sedコマンドを使って、ファイルの1行目(先頭)にヘッダーを挿入する方法は以下となります

sed -i '1iヘッダー1,ヘッダー2,ヘッダー3' ファイル名.csv

# ヘッダーに"NO,DATE,NAME"を追加する場合
$ sed -i '1iNO,DATE,NAME' test.csv

【コマンド解説】

  • -i: ファイルの内容を直接編集します。バックアップファイルを作成したい場合は、-i.bak のように拡張子を指定します。
  • '1i...': これは sed の編集コマンドで、1行目の前に指定した文字列を挿入(insert)するという意味です。
  • ヘッダー1,ヘッダー2,ヘッダー3: ここに、追加したいヘッダーの文字列をCSVの区切り文字(通常はカンマ)で区切って記述します。

echo と cat を組み合わせる方法

echo、catを組み合わせてして、ヘッダーを追加した新しいファイルとして出力する場合などに使えます。

echo 'ヘッダーA,ヘッダーB,ヘッダーC' | cat - ファイル名.csv > 新しいファイル名.csv

# ヘッダーに"NO,DATE,NAME"を追加して、"test_new.csv"として保存します
$ echo 'NO,DATE,NAME' | cat - test.csv > test_new.csv

【コマンド解説】

  • echo '...': 必要なヘッダー行を出力します。
  • |: パイプで、echo の出力を cat コマンドの入力に渡します。
  • cat - ファイル名.csv: cat コマンドの引数に - を指定すると、標準入力(この場合は echo の出力)を読み込み、その後に指定したファイル(ファイル名.csv)の内容を連結して出力します。
  • > 新しいファイル名.csv: 連結された結果を新しいCSVファイルにリダイレクトして保存します。

元のファイルに上書きしたい場合は、一時ファイルを使用する必要があります。

# 1. ヘッダーと元のファイルを連結して一時ファイルを作成
echo 'NO,DATE,NAME' | cat - test.csv > temp.csv

# 2. 元のファイルに上書き
mv temp.csv test.csv

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
LinuxUbuntu
スポンサーリンク
シェアする
adminをフォローする
タイトルとURLをコピーしました