Comando de corte Erro: o delimitador deve ser um único caractere

0

Estou tentando o seguinte comando no bash-4.3

$history | grep history | xargs cut -d ' ' -f1

mas estou recebendo o seguinte delimitador Erro que não consigo me livrar

cut: o delimitador deve ser um único caractere

Eu tentei remover xargs, mas isso dá uma saída em branco. A ideia é obter um número de comando específico do histórico e, em seguida, passá-lo para o histórico -d para excluir o comando específico do histórico. Aqui está apenas a saída de

history | grep history



  498  history | grep history | cat | xargs cut -d " " -f1
  500  history | grep history | cat | xargs awk -ifs " "
  501  history | grep history | xargs cut -d " " -f1
  502  history | grep history | xargs cut -d '0' -f1
  503  history | grep history | xargs cut -d 0 -f1
  504* history | 
  505  history | ack history | xargs cut -d ' ' -f1
  506  history | ack history | xargs cut -d ' ' -f1
  507  history | ack history | cut -d ' ' -f1
  508  history | grep history 
    
por user2065276 28.09.2018 / 21:58

2 respostas

2

Algumas explicações:

  • Você realmente quer o campo segundo , então você precisa mudar para 'cut -d' '-f 2'.
  • xargs não é aplicável aqui. O que ele faz é pegar a entrada padrão e passa-os como argumentos para um comando. No entanto, cut opera na entrada padrão por padrão, que é o que você deseja. history | grep history | xargs cut […] acaba criando comandos como cut […] [some content from the Bash history]' . Para processar uma série de números de linha impressos com uma nova linha após cada um, você deverá usar um while read loop:

    while IFS=$'\n' read -r -u9 number
    do
        history -d "$number"
    done 9< <(history | grep […] | cut […])
    
  • some_command | cat | other_command é completamente redundante. cat simplesmente copia sua entrada padrão para a saída padrão por padrão.
por 28.09.2018 / 22:13
0

Tente este comando

    history | grep history | awk NR==1'{print $8 " " $9 " " $10 " " $11 " " $12 "" $13 }'
xargs cut -d ' '-f1

NR==1 : awk lerá as células na primeira linha da tabela e, em seguida, imprimirá as colunas relevantes para "xargs cut -d '' -f1", que são 8-12

    
por 28.09.2018 / 22:10