Por que o delimitador ainda é mostrado na saída? Achei que os campos 2 e 4 seriam mostrados sem o -
delimitador. Como usar cut
o comando para não mostrar ao mesmo tempo o próprio delimitador usado para separar os campos?
$ curl -s -m 2 https://am.i.mullvad.net/json | jq '.mullvad_exit_ip_hostname'
"nl-ams-wg-002"
$ curl -s -m 2 https://am.i.mullvad.net/json | jq '.mullvad_exit_ip_hostname' | sd '\"' '' | cut -d '-' -f 2,4
ams-002
Não há necessidade de
sd
(seja lá o que for) oucut
aqui:Quanto à questão geral sobre a remoção do delimitador, com a implementação GNU de
cut
, você pode usar a--output-delimiter
opção com um delimitador vazio:Cuidado com o comportamento surpreendente de
cut
quando a entrada não possui delimitador:Adicionar a
-s
opção remove as linhas não delimitadas, ou seja, aquelas que possuem 0 ou 1 campo, e não aquelas que não possuem os campos solicitados.Você pode usar
awk
em vez decut
para obter mais flexibilidade (e evitar o GNUismo):Ou
Imprimir algo apenas para as linhas¹ que contenham pelo menos 4 campos.
¹ sim,
awk
(por padrão), comocut
processar cada linha, uma de cada vez, enquantojq
'ssplit
processará a string como um todo, mesmo que contenha caracteres de nova linha.