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.
InformationsquelleAutor brucezepplin | 2015-04-18
Schreibe einen Kommentar