Использование текста в другом файле для команды

Использование текста в другом файле для команды

Я пытаюсь найти рабочий метод извлечения данных из файла и вывода их в правильном формате.

Допустим, у меня есть файл 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

В зависимости от вашего реального применения вы также можете рассмотреть xargsex.

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

Связанный контент