各行の値に基づいて異なるファイルからファイルを作成します。

各行の値に基づいて異なるファイルからファイルを作成します。

次の値を含むcsvファイルを生成します。

yp1234,577,1,3
yp5678,570,3,5
yp9012,132,8,9

データを抽出し、2番目の列に基づいてファイルを作成する必要があります。その値が577より大きい場合は、行全体を抽出して別のファイルに配置する必要があります。

私の言葉は、2番目の列の行数が577より大きいファイルを必要とすることです。

答え1

これは、次のコマンドを使用して実行できます。

awk -F "," ' $2 >= 577 ' filename.csv > create_files

上記の内容全体を新しいファイルに入れることができ(新しいファイル名をとして指定create_files)、そのファイルから新しいファイルを作成できるようになりました。

上記のコマンドを実行した後、ファイル名の規則に言及していないので、最初の列がファイル名である可能性があるとします。したがって、次のアプローチに従うことができます。

awk -F "," '{ print $1 }' create_files | while read a; do touch $a; done

そのawkコマンドを使用して最初の列を個別に抽出してファイル名を取得し、ループwhiletouchコマンドを使用して最初の列に基づいて新しいファイルを作成しました。

しかし、最初の列は常にユニークだと思います。一意でない場合は、他のアプローチを取る必要があるかもしれません。これを行うには、質問を編集し、使用するファイル名の規則に言及する必要があります。

答え2

ワンストップショップawk(列1がユニークであると仮定)

awk -F "," '$2 >= 577 { print $0 > $1 }' my.csv

関連情報