GNU/Linux >> LINUX-Kenntnisse >  >> Linux

xargs Substitution von mehr als einem Argument

Ich kenne keinen xargs Option, die das tut, aber Sie können etwas Ähnliches mit einem Aufruf von bash -c erreichen :

$ echo -e "line 1\nline    2\nline 3" | xargs bash -c 'echo "${@}" DONE' _
line 1 line 2 line 3 DONE

Beachten Sie, dass xargs stellt die Zeilen nicht bereit als Argumente, auch wenn Sie -L angeben . Vielleicht möchten Sie -d verwenden um anzugeben, dass Zeilenumbrüche Elemente trennen (glaube ich nur gnu xargs). Vergleichen Sie Folgendes:

$ echo -e "line 1\nline    2\nline 3" |
  xargs bash -c 'printf "<%s>\n" "${@}" DONE' _
<line>
<1>
<line>
<2>
<line>
<3>
<DONE>

$ echo -e "line 1\nline    2\nline 3" |
  xargs -d\\n bash -c 'printf "<%s>\n" "${@}" DONE' _
<line 1>
<line    2>
<line 3>
<DONE>

Zeilenumbrüche in \nul umwandeln Abschlusszeichen, dann verwenden Sie xargs -0

$ echo -ne 'line 1\nline 2\nline 3\n' | tr '\n' '\0' | xargs -0 -Ix echo x DONE
line 1 DONE
line 2 DONE
line 3 DONE

Linux
  1. Eine Reihe von Befehlen mit einem Sudo ausführen?

  2. Suchen -exec + Vs Finden | Xargs:Welche soll man wählen?

  3. Wie teilt man das Terminal in mehr als eine „Ansicht“ auf?

  4. Einzeilige Bedingungsüberprüfung im Makefile?

  5. Zeile für Zeile im Bash-Skript lesen

Wie kann man Xargs sagen, welches Argument es wählen soll?

Zorin OS 15 schöner und nützlicher denn je

Wie grep Zeilen, die mehr als eine bestimmte Anzahl von Sonderzeichen enthalten

wie man eine neue Zeile einfügt, wenn eine Zeile mehr als 60 Zeichen hat

Wie binde ich den MySQL-Server an mehr als eine IP-Adresse?

Können Sie mehr als eine ~/.ssh/config-Datei haben?