Verwenden von Text in einer anderen Datei für einen Befehl

Verwenden von Text in einer anderen Datei für einen Befehl

Ich versuche, eine funktionierende Methode zu finden, um Daten aus einer Datei zu extrahieren und sie im richtigen Format auszugeben.

Nehmen wir an, ich habe eine Datei namens data.txt und sie sieht folgendermaßen aus:

abc 123
def 456

Anschließend möchte ich die Daten mithilfe eines Skripts analysieren und wie folgt darstellen:

first abc second 123
third def fourth 456

Bisher habe ich Folgendes erstellt:

#!/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

Und die Ausgabe sieht folgendermaßen aus:

First abc second 123
third abc fourth 123
First def second 456
third def fourth 456

Anstatt also jede Zeile zu lesen, sie einmal anzuwenden und dann mit der nächsten Zeile in data.txt fortzufahren, wendet es dieselben Daten immer wieder auf den nächsten Echo-Befehl an und fährt dann mit der nächsten Zeile fort. Ich weiß, dass ich wahrscheinlich etwas Einfaches übersehe, aber es war ein langer Tag. :)

Antwort1

Sie können zwei Lesevorgänge in einer einzigen Schleife durchführen

#!/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

Abhängig von Ihrer tatsächlichen Anwendung möchten Sie sich vielleicht auch Folgendes ansehen xargs:

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

verwandte Informationen