ヘッダーのない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

