フォルダ内のすべてのcsvファイルのデータ行の末尾にヘッダーフィールドとファイル名を追加します。

フォルダ内のすべてのcsvファイルのデータ行の末尾にヘッダーフィールドとファイル名を追加します。

フォルダ内のすべてのcsvファイルのすべての行の末尾にファイル名(拡張子なし)を追加したいと思います。すべてのファイルに同じヘッダーがあります。

私のフォルダにa.csvとb.csvという2つのファイルがあるとしましょう。

a.csvには次のものが含まれます(最初の行はヘッダーです)。

num1,num2,num3  
1,2,3

b.csvには次のものが含まれます(最初の行はヘッダーです)。

num1,num2,num3    
4,5,6

.csvファイルが必要です(最初の行はヘッダーです)。

num1,num2,num3,filename  
1,2,3,a

b.csvファイルが必要です。 (最初の行はヘッダーです。)

num1,num2,num3,filename  
4,5,6,b

Unixではどうすればいいですか?

ベストアンサー1

for file in *.csv
do
  filename=${file%.csv}
  sed -i -e "1s/\$/,filename/; 2,\$s/\$/,$filename/" "$file"
done
  1. *csv現在のディレクトリの各ファイルを繰り返します。
  2. 末尾を削除してファイル名テキストを準備する.csv
  3. -isedを使用してファイルを適切に編集します。
    1. 1行目のみ行末を検索し、text(escaped $)に置き換えます,filename
    2. 2行目からファイルの終わり($)まで、行の終わり($)を検索してコンマと準備されたファイルの名前に置き換えます。

おすすめ記事