фильтровать строки в csv и сохранять в новый файл csv

Я хочу отфильтровать файл CSV построчно и выбрать строки, которые удовлетворяют условию if.

Поскольку файл csv разделен запятой, код должен выглядеть примерно так:

'BEGIN {FS=','} {while read line if (condition) save selected line to a new csv file } done < file.csv' 

Как я могу сохранить выбранные строки в новый CSV-файл, если он удовлетворяет условию if? Кто-нибудь может привести несколько примеров?

Я бы использовал 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) 

Используйте awk таким образом

 awk -F, '(condition) { print >"to_new.csv"}' file.csv 

Параметр -F, указывает запятую , которая разделяет поля. Если условие соответствует вашим критериям, оно перенаправит строку в новый файл с именем to_new.csv .

Мы использовали redirect single- ‘ > ‘ здесь. Когда используется этот тип перенаправления, to_new.csv стирается до того, как в него будет записан первый вывод. Последующие записи в тот же файл to_new.csv не стирают файл, а добавляют к нему. (Это отличается от того, как вы используете перенаправления в сценариях оболочки.) Если to_new.csv не существует, он создается.

Или просто напишите:

 awk -F, 'condition' file.csv > to_new.csv