
csvファイルを1行ずつフィルタリングし、if条件を満たす行を選択したいと思います。
csvファイルはカンマで区切られているため、コードは次のようになります。
'BEGIN {FS=','}
{while read line
if (condition)
save selected line to a new csv file
} done < file.csv'
条件が満たされたら、選択した行を新しいcsvファイルに保存する方法は?誰でもいくつかの例を提供できますか?
答え1
awk
このようにしてください
awk -F, '(condition) { print >"to_new.csv"}' file.csv
フィールドを区切る-F,
カンマ区切り文字を指定します。,
もし状況あなたの基準と一致する場合は、行をto_new.csv
。
我々は使用したシングル" >
"リダイレクトここで。このタイプのリダイレクトを使用する場合to_new.csv最初の出力が書き込まれる前にクリアされます。以降の書き込みは同じです。to_new.csvファイルを削除せずに追加してください。 (これはシェルスクリプトでリダイレクトを使用するのとは異なります。)to_new.csv存在せずに生成されます。
または、単に次のように書いてください。
awk -F, 'condition' file.csv > to_new.csv
答え2
私はPythonを使ってこれをします。例は次のとおりです。
import csv
#Create a csv file with some data
myData = [["first_name", "second_name", "Grade"],
['Alex', 'Brian', 'A'],
['Tom', 'Smith', 'B']]
myFile1 = open('file1.csv', 'w')
with myFile1:
writer = csv.writer(myFile1)
writer.writerows(myData)
#Create a second csv file
myFile2 = open('file2.csv', 'w')
#Read the first file created with data
with open('file1.csv') as File:
reader = csv.reader(File)
for row in reader:
#Print every row to the console
print(row)
if row[0] == "Alex":
#If the first cell of the row says Alex, say hi and add the row to the second file
print "Hi Alex"
with myFile2:
writer = csv.writer(myFile2)
writer.writerow(row)