Bashスクリプト:ファイル名をヘッダーとしてCSVにエクスポートする方法

Bashスクリプト:ファイル名をヘッダーとしてCSVにエクスポートする方法

私のフォルダ「Subj1」には、次の形式でソートされた複数の.txtファイルがあります。

  regional_vol_GM_atlas1.txt
  regional_vol_GM_atlas1_prop.txt
  ....
  regional_vol_GM_atlas152.txt

各ファイルは、次の形式のデータで構成されます。

667869 667869
580083 580083
316133 316133
11398.1 11398.1

関連ファイル名とともにテキストファイルのデータをcsvファイルにエクスポートしたいと思います。

私はこれのためのコードを書いた

#!/bin/bash

for x in regional_vol*.txt; do

   /bin/echo -n -e "$x\t"

done

paste regional_vol*.txt >> final_table.csv

各ファイルのデータをcsvファイルに貼り付けます。サンプル出力画像は以下の通りです。

出力イメージ

しかし、出力から関連ファイル名をデータヘッダーにインポートしたいと思います。これらの出力を取得するには、どのようにコードを変更する必要がありますか?

以下は私が期待する出力の例です。

サンプル出力

ベストアンサー1

私の考えでは、あなたが望むのは単純なコマンドリダイレクトであり、改行文字を印刷する別のリダイレクトであるecho可能性が高いです。echoこのような:

files="regional_vol*.txt"
dst=final_table.csv
# remove the hash sign here to truncate the destination before writing
# > $dst    
for x in $files; do
   /bin/echo -n -e "$x\t" >> $dst
done
echo >> $dst
paste $files >> $dst

または、printfループを次に置き換えます。

printf "%s\t" $files >> $dst
echo >> $dst
paste $files >> $dst

どちらもヘッダー行の末尾に追加のタブを印刷しますが、これは問題ではありません。

おすすめ記事