Я пытаюсь найти рабочий метод извлечения данных из файла и вывода их в правильном формате.
Допустим, у меня есть файл data.txt, и он выглядит следующим образом:
abc 123
def 456
Затем я хочу использовать скрипт для анализа данных и представления их следующим образом:
first abc second 123
third def fourth 456
На данный момент я создал следующее:
#!/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
И вывод выглядит так:
First abc second 123
third abc fourth 123
First def second 456
third def fourth 456
Поэтому вместо того, чтобы прочитать каждую строку и применить ее один раз и перейти к следующей строке в data.txt, он продолжает применять те же данные к следующей команде echo, а затем переходит к следующей строке. Я знаю, что, возможно, упускаю из виду что-то простое, но это был долгий день. :)
решение1
Вы можете выполнить два чтения в одном цикле
#!/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
В зависимости от вашего реального применения вы также можете рассмотреть xargs
ex.
xargs -L2 /bin/printf 'First %s second %s\nthird %s fourth %s\n' < data.txt