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

0

Nós geraremos um arquivo csv com valores abaixo.

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

Eu preciso extrair dados e criar arquivos com base na segunda coluna. Se for um valor maior que 577, a linha inteira deve ser extraída e colocada em um arquivo separado.

Quero dizer, preciso de um arquivo com linhas com uma segunda coluna maior que 577.

Por favor, ajude usando o comando sed ou awk .

    
por user130240 19.06.2014 / 00:46

1 resposta

4

Isso pode ser feito usando o comando abaixo.

awk -F "," ' $2 >= 577 ' filename.csv > create_files

Você pode colocar todo o conteúdo do conteúdo acima em um novo arquivo (nomeei o novo arquivo como create_files ) e agora você pode criar novos arquivos a partir desse arquivo.

Depois de executar o comando acima, uma vez que 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 comando awk para extrair a primeira coluna sozinha para ter os nomes dos arquivos e, com base na primeira coluna, criar os novos arquivos usando o comando while e touch .

No entanto, presumo que a primeira coluna será sempre ú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.

    
por 19.06.2014 / 00:58

Tags