Cut funktioniert mit Echo, aber nicht ohne

Cut funktioniert mit Echo, aber nicht ohne

Ich versuche also, eine Ausgabe ähnlich zu extrahieren

x=($discover nginx --human=nood)

Das gibt mir eine Ausgabe wie

i-03099 nginx IP Noodlefish Pip b4b966d280546c6b070f5f952c281d3294308048

Außerdem möchte ich die Pip-Spalte in eine andere Variable extrahieren. Wenn ich das tue

echo "$x" | cut -f6

Ich erhalte das gewünschte Ergebnis, aber erst wenn ich es versuche.

y= "$x" | cut -f6 

Ich erhalte eine leere Ausgabe.

Können Sie mir bitte erklären, warum das passiert und wie ich das gewünschte Ergebnis erziele. Vielen Dank im Voraus.

Antwort1

Außerdem möchte ich die Pip-Spalte in eine andere Variable extrahieren. Wenn ich das tue

echo "$x" | cut -f6

Ich erhalte das gewünschte Ergebnis[...]

Das ist komisch, denn das sollte nicht funktionieren, da

‘-f FIELD-LIST’
‘--fields=FIELD-LIST’
     Select for printing only the fields listed in FIELD-LIST.  Fields
     are separated by a TAB character by default.  Also print any line
     that contains no delimiter character, unless the ‘--only-delimited’
     (‘-s’) option is specified.

-fsollte nur funktionieren, wenn die Felder durch TAB getrennt sind, sofern nicht -danders festgelegt.

Wenn Sie das Feld nach dem Wort extrahieren möchten pip, funktioniert dieses Skript bei mir

x="i-03099 nginx IP noodlefish pip b4b966d280546c6b070f5f952c281d3294308048"

y=$(echo -n "$x" | cut -d ' ' -f 6 -)

echo "$y"

Antwort2

Verwenden Sie den folgenden Befehl

y=`echo $x |cut -f6`

verwandte Informationen