Estou tentando descobrir um método funcional para extrair dados de um arquivo e exibi-los no formato correto.
Digamos que eu tenha um arquivo chamado data.txt e ele tenha a seguinte aparência:
abc 123
def 456
Quero então usar um script para analisar os dados e apresentá-los da seguinte forma:
first abc second 123
third def fourth 456
Até agora eu criei isso:
#!/bin/sh
#
for i in data.txt; do while read -r a b; do
echo "First $a second $b"
echo "third $a fourth $b"
done < data.txt
done
E a saída fica assim:
First abc second 123
third abc fourth 123
First def second 456
third def fourth 456
Portanto, em vez de ler cada linha e aplicá-la uma vez e passar para a próxima linha em data.txt, ele continua aplicando os mesmos dados ao próximo comando echo e depois passa para a próxima linha. Sei que provavelmente estou negligenciando algo simples, mas foi um longo dia. :)
Responder1
Você poderia fazer duas leituras em um único loop
#!/bin/sh
while read -r a b && read -r c d; do
echo "First $a second $b"
echo "third $c fourth $d"
done < data.txt
Dependendo da sua aplicação real, você também pode querer dar uma olhada no xargs
ex.
xargs -L2 /bin/printf 'First %s second %s\nthird %s fourth %s\n' < data.txt