Ir ao conteúdo

Outro Listar texto com espaço (Shell script)


Ir à solução Resolvido por Marcos FRM,

Posts recomendados

Postado

Tenho um arquivo com as informações separadas por ponto e vírgula assim,

 

1;1;00:00:00;00:01:00;2023 Mitsubishi Outlander PHEV;$39,845
1;2;00:16:30;00:17:25;2023 Mitsubishi Eclipse Cross;$25,795
1;3;00:02:00;00:05:30;2023 Mitsubishi Outlander;$27,595
2;1;01:01:00;01:25:00;2023 Mitsubishi Outlander Sport;$22,995
3;1;11:35:30;11:40:10;2023 Mitsubishi Mirage G4;$17,245

 

Porém alguns campos tem espaço no texto e com isso não consigo atribuir o veículo. Este é o meu script,

 

#!/bin/sh

for line in $(cat file); do
    index=$(echo $line | cut -d ";" -f1)
    eps=$(echo $line | cut -d ";" -f2)
    vehicle=$(echo $line | cut -d ";" -f5)
    company=$(echo $vehicle | cut -d " " -f2)
    output="${company} - ${index}x${eps} - ${vehicle}.mp4"
    
    echo $output
done

 

A saída está assim,

2023 - 1x1 - 2023.mp4
Mitsubishi - MitsubishixMitsubishi - Mitsubishi.mp4
Outlander - OutlanderxOutlander - Outlander.mp4
 - .mp4$39,845


2023 - 1x2 - 2023.mp4
Mitsubishi - MitsubishixMitsubishi - Mitsubishi.mp4
Eclipse - EclipsexEclipse - Eclipse.mp4
 - .mp4x$25,795

 

Mas devia ser,

Mitsubishi - 1x1 - 2023 Mitsubishi Outlander PHEV.mp4
Mitsubishi - 1x2 - 2023 Mitsubishi Eclipse Cross.mp4

 

Como faço para mostrar dessa forma?

 

Postado

Acabei encontrando outra forma melhor, com while read, onde não é necessário modificar a variável IFS (em outro sistema só funcionava atribuindo $ sem '\n'),

 

cat file | while read line; do
...
done

 

  • Membro VIP
  • Solução
Postado

Melhor ainda:

 

while read line || [[ $line ]]; do
...
done < file

 

Se EOF não tiver uma nova linha, read retorna 1, porém salva a linha em line. Nesse caso, o loop não seria executado para a última linha do arquivo sem || [[ $line ]].

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!