csv の各行を、特定の列に含まれる文字列をファイル名として新しいファイルに保存します。

csv の各行を、特定の列に含まれる文字列をファイル名として新しいファイルに保存します。

Linux マシンに次のような csv ファイルがあります:

value1 value2 name  
1      2      a  
2      3      b  
4      5      c  

n私がしたいのは、この csv のエントリを、そのファイル内の対応する数字だけをスペースで区切ったテキスト ファイルに分割することですn。N は、name の値によって決まります。

したがって、上記の csv は次のようになります。

  • a.txt含む1 2
  • b.txt含む2 3
  • c.txt含む4 5

特定の項目に対して複数のエントリがある場合はname、それらを 1 つのファイルにまとめる必要があります。

例えば、

1  2  a   
21 31 a

シングルがあるはずa.txtです

1  2     
21 31

答え1

実はとても簡単です

awk '{print $1, $2 > $3 ".txt"}' file.csv

約1000以上の新規ファイルがある場合のみ、問題が発生するはずです。

関連情報