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

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

以下のように、Linuxシステムにcsvファイルがあります。

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

私が望むのは、スペースで区切られたファイルの対応する数だけを使用して、nこのcsvのエントリをテキストファイルに分割することです。nN は名前の値によって決まります。

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

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

特定の項目に複数の項目がある場合は、nameこれらの項目を単一のファイルにマージする必要があります。

以前の場合

1  2  a   
21 31 a

a.txtそれでは、

1  2     
21 31

答え1

実は本当に簡単です。

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

新しいファイルが1000を超える場合にのみ問題が発生します。

関連情報