Split-line in 3 separate Argumente, mit xargs
Wenn ich die folgenden:
$ printf '%s\n' "${fa[@]}"
1 2 3
4 5 6
7 8 9
denen jede Zeile wird ein neues array-element. Ich möchte in der Lage sein, die Spaltung des Elements Trennzeichen durch Leerzeichen und verwenden Sie das Ergebnis als 3 separate Parameter und Rohr in xargs.
Beispielsweise das erste element ist:
1 2 3
denen mit xargs möchte ich weitergeben 1
, 2
und 3
in einem einfachen echo-Befehl wie:
$ echo $0
1
4
7
$ echo $1
2
5
8
$ echo $2
3
9
6
So, ich habe versucht, dies zu tun, in der folgenden Weise:
printf '%s\n' "${fa[@]}" | cut -d' ' -f1,2,3 | xargs -d' ' -n 3 bash -c 'echo $0'
gibt:
1
2
3 4
5
6 7
8
9 10
welche abgesehen von der seltsamen line-Bestellung - versuchen xargs -d' ' -n 3 bash -c 'echo $0'
nicht drucken Sie das erste "element" der jeweiligen Zeile, d.h.
$ echo $0
1
4
7
sondern druckt Sie alle aus.
Was ich Frage ist, für jedes element, wie ich teilt die Linie in drei separate Argumente, auf die verwiesen werden kann via xargs?
Dank!
- Aus Neugier, wo hast den
10
in den Ausgang kommen? - Die input-Datei ist eigentlich länger (viel länger!), gleiche drei-Spalten-format wenn. Ich schneiden Sie es aus für die Bequemlichkeit der Erklärung der Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Waren Sie in die richtige Richtung gehen
Arrays deklariert:
Zu erreichen, was Sie wollen:
dieses echo wird Sie die folgenden Zeilen (change-Befehl übergeben wird, das xargs entsprechend)
Wenn ich nur fügen Sie Ihre Antwort ein und verändert es ein wenig, bekommen wir die folgenden
Hinweis fehlt -d' ' in xargs, diese option ist nicht verfügbar in einigen Versionen von xargs.