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