Создание файла из другого файла на основе числового значения в каждой строке

Создание файла из другого файла на основе числового значения в каждой строке

Мы сгенерируем CSV-файл с указанными ниже значениями.

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

Мне нужно извлечь данные и создать файлы на основе второго столбца. Если его значение больше 577, то всю строку нужно извлечь и поместить в отдельный файл.

Я имею в виду, что мне нужен файл, содержащий строки со вторым столбцом больше 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команду для извлечения только первого столбца, чтобы получить имена файлов, и на основе первого столбца создаю новые файлы с помощью whileцикла и touchкоманды.

Однако я предполагаю, что первый столбец всегда будет уникальным. Если он не уникален, нам, возможно, придется использовать другой подход. Для этого вам нужно отредактировать свой вопрос и упомянуть, какое соглашение об именах файлов вы планируете использовать.

решение2

Единый магазин с awk, предполагая, что столбец 1 уникален

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

Связанный контент