Criando um arquivo a partir de outro arquivo com base em um valor numérico em cada linha

Criando um arquivo a partir de outro arquivo com base em um valor numérico em cada linha

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 awkcomando para extrair apenas a primeira coluna para ter os nomes dos arquivos e com base na primeira coluna crio os novos arquivos usando o whileloop e toucho 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

informação relacionada