Estoy tratando de encontrar un método de trabajo para extraer datos de un archivo y generarlos en el formato correcto.
Digamos que tengo un archivo llamado data.txt y se ve así:
abc 123
def 456
Luego quiero usar un script para analizar los datos y presentarlos de la siguiente manera:
first abc second 123
third def fourth 456
Hasta ahora he creado esto:
#!/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
Y el resultado se ve así:
First abc second 123
third abc fourth 123
First def second 456
third def fourth 456
Entonces, en lugar de leer cada línea y aplicarla una vez y pasar a la siguiente línea en data.txt, sigue aplicando los mismos datos al siguiente comando de eco y luego pasa a la siguiente línea. Sé que probablemente estoy pasando por alto algo simple, pero ha sido un día largo. :)
Respuesta1
Podrías hacer dos lecturas en un solo bucle.
#!/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
Dependiendo de su aplicación real, es posible que también desee consultar xargs
ex.
xargs -L2 /bin/printf 'First %s second %s\nthird %s fourth %s\n' < data.txt