各行の数値に基づいて別のファイルからファイルを作成する

各行の数値に基づいて別のファイルからファイルを作成する

以下の値を含む 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

関連情報