отфильтровать строки в CSV и сохранить в новом csv file

Это довольно чисто, но для дампа ссылок используется lynx (а не парсинг исходного HTML с помощью регулярного выражения или чего-то еще):

wget -q "https://www.virtualbox.org/wiki/Linux_Downloads" -O - | lynx -stdin -dump -listonly | grep -Eo 'http. + amd64.run $'

Последнее регулярное выражение grep предполагает, что вам нужна версия amd64.

То же самое с curl :

curl -s "https://www.virtualbox.org/wiki/Linux_Downloads" | lynx -stdin -dump -listonly | grep -Eo 'http. + amd64.run $'

ОБНОВЛЕНИЕ: правильно указано, что вызов wget или curl не требуется:

lynx -dump -listonly "https://www.virtualbox.org/wiki/Linux_Downloads" | grep -Eo 'http. + amd64.run $'

0
08.05.2018, 19:54
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)
0
28.01.2020, 02:43

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

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

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

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

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

awk -F, 'condition' file.csv > to_new.csv
1
28.01.2020, 02:43

Теги

Похожие вопросы