Cut funciona com echo, mas não sem ele

Cut funciona com echo, mas não sem ele

Então, estou tentando extrair uma saída semelhante a

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

o que me dá uma saída como

i-03099 nginx IP noodlefish pip b4b966d280546c6b070f5f952c281d3294308048

Além disso, quero extrair a coluna pip em outra variável. Quando eu faço

echo "$x" | cut -f6

Obtenho a saída desejada, mas quando tento.

y= "$x" | cut -f6 

Eu recebo uma saída em branco.

Por favor, você pode me explicar por que isso está acontecendo e como posso obter o resultado que desejo. Agradeço antecipadamente.

Responder1

Além disso, quero extrair a coluna pip em outra variável. Quando eu faço

echo "$x" | cut -f6

Eu obtenho o resultado desejado [...]

Isso é estranho, porque isso não deveria funcionar, já que

‘-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.

-fdeve funcionar apenas quando os campos são separados por TAB, a menos que -dseja definido de outra forma.

Se você deseja extrair o campo após a palavra pip, esse script funciona para mim

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

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

echo "$y"

Responder2

Use o comando abaixo

y=`echo $x |cut -f6`

informação relacionada