msoliver
(usa Debian)
Enviado em 02/12/2020 - 19:14h
amandacsiilva escreveu:
Olá. Eu tenho vários arquivos que contém 10 colunas e gostaria de separa-los de acordo com o valor da sétima coluna. Exemplo do conteúdo dos arquivos:
20140612 2220 178702 -5.445 -34.275 20.9 02000 0.2 -0.1 1.0
20140612 2100 179196 -5.391 -34.266 20.4 05000 -0.2 -0.2 1.0
20140612 2330 179197 -5.400 -34.266 20.6 08000 0.2 0.1 1.0
20140612 1240 179198 -5.409 -34.266 20.5 07000 -0.2 0.1 1.0
20140612 1900 179201 -5.436 -34.266 22.0 02000 0.2 0.0 1.0
20140612 0700 179202 -5.445 -34.266 24.0 03000 0.1 -0.1 1.0
20140612 0950 179203 -5.454 -34.266 20.5 04000 -0.1 0.0 1.0
20140612 1010 184706 -5.481 -34.167 23.6 09000 0.1 0.1 1.0
20140612 1840 184707 -5.490 -34.167 21.8 10000 -0.2 0.1 1.0
20140612 1530 99804 -6.361 -35.707 23.0 11000 NaN NaN 0.1
20140612 1450 105592 -4.457 -35.598 20.0 12000 -0.2 -0.1 1.0
20140612 2210 105593 -4.466 -35.598 21.0 15000 -1.2 -0.1 1.0
20140612 2230 122099 -4.520 -35.299 21.8 04000 0.1 -0.1 1.0
20140612 1220 122100 -4.529 -35.299 21.0 12000 -0.4 -0.2 1.0
20140612 1440 122599 -4.520 -35.290 21.8 13000 0.1 -0.1 1.0
No caso, eu preciso separar em três arquivos, sendo que no arquivo 1 tem que estar as linhas em que a coluna 7 vai de 02000 a 04000, no arquivo 2 as linhas que tem valores de 05000 a 09000 na coluna 7 e no arquivo 3 as linhas em que os valores da coluna 7 vão de 10000 a 15000.
ARQUIVO 1:
20140612 2220 178702 -5.445 -34.275 20.9 02000 0.2 -0.1 1.0
20140612 1900 179201 -5.436 -34.266 22.0 02000 0.2 0.0 1.0
20140612 0700 179202 -5.445 -34.266 24.0 03000 0.1 -0.1 1.0
20140612 0950 179203 -5.454 -34.266 20.5 04000 -0.1 0.0 1.0
20140612 2230 122099 -4.520 -35.299 21.8 04000 0.1 -0.1 1.0
ARQUIVO 2:
20140612 2100 179196 -5.391 -34.266 20.4 05000 -0.2 -0.2 1.0
20140612 2330 179197 -5.400 -34.266 20.6 08000 0.2 0.1 1.0
20140612 1240 179198 -5.409 -34.266 20.5 07000 -0.2 0.1 1.0
20140612 1010 184706 -5.481 -34.167 23.6 09000 0.1 0.1 1.0
ARQUIVO 3:
20140612 1840 184707 -5.490 -34.167 21.8 10000 -0.2 0.1 1.0
20140612 1530 99804 -6.361 -35.707 23.0 11000 NaN NaN 0.1
20140612 1450 105592 -4.457 -35.598 20.0 12000 -0.2 -0.1 1.0
20140612 2210 105593 -4.466 -35.598 21.0 15000 -1.2 -0.1 1.0
20140612 1220 122100 -4.529 -35.299 21.0 12000 -0.4 -0.2 1.0
20140612 1440 122599 -4.520 -35.290 21.8 13000 0.1 -0.1 1.0
Agradeço pela ajuda!
Olá Amanda, tudo bem?
Já fizemos algo parecido......
segue:
awk '{if($7 >= 2000 && $7 <= 4000) arq="arq_01";else if($7 >= 5000 && $7 <= 9000) arq="arq_02";else if($7 >= 10000 && $7 <= 15000) arq="arq_03"} {print $0 > arq}' arq.txt
Obs:. Se o campo 7, nunca é < 2000, pode "reduzir" o comando, eliminando:
"$7 >= 2000 &&"
A mesma lógica pode ser aplicada para 15000....
Se o máximo é 15000, pode eliminar "&& $7 <= 15000"
É isso.
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando:
lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p' ,
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:
Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.
______________________________________________________________________