Iremos gerar um arquivo csv com os valores abaixo.
yp1234,577,1,3
yp5678,570,3,5
yp9012,132,8,9
Preciso extrair dados e criar arquivos com base na segunda coluna. Se o valor for maior que 577, toda a linha deverá ser extraída e colocada em um arquivo separado.
Quero dizer, preciso de um arquivo com linhas com segunda coluna maior que 577.
Responder1
Isso pode ser feito usando o comando abaixo.
awk -F "," ' $2 >= 577 ' filename.csv > create_files
Você pode colocar todo o conteúdo acima em um novo arquivo (chamei o novo arquivo de create_files
) e agora você pode criar novos arquivos a partir deste arquivo.
Depois de executar o comando acima, como você não mencionou nenhuma convenção de nome de arquivo, presumi que a primeira coluna pode atuar como o nome do arquivo. Então, você pode seguir a abordagem como,
awk -F "," '{ print $1 }' create_files | while read a; do touch $a; done
Estou usando o awk
comando para extrair apenas a primeira coluna para ter os nomes dos arquivos e com base na primeira coluna crio os novos arquivos usando o while
loop e touch
o comando.
No entanto, presumo que a primeira coluna sempre será única. Se não for único, talvez precisemos seguir outra abordagem. Para isso você precisa editar sua pergunta e mencionar qual convenção de nome de arquivo você está planejando.
Responder2
Balcão único com awk
, assumindo que a coluna 1 é única
awk -F "," '$2 >= 577 { print $0 > $1 }' my.csv