Usando texto em outro arquivo para um comando

Usando texto em outro arquivo para um comando

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 xargsex.

xargs -L2 /bin/printf 'First %s second %s\nthird %s fourth %s\n' < data.txt

informação relacionada