Мы сгенерируем 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