Uso de aspas ao executar comandos em uma máquina remota usando ssh

-1

Eu tenho um comando que sei que funciona corretamente quando eu for remoto em uma máquina e executá-lo. O comando está abaixo:

grep "SearchTerm        $1" file.txt | sed 's/^.*SearchTerm  $1,//g' | sort | uniq -c | sort -nr

Mas, quando eu tento executar o comando do meu computador local usando ssh , ele não funciona mais. Acho que é devido ao uso de citações, mas não sei como devo corrigi-lo. Alguma sugestão?

ssh username@hostname 'grep "SearchTerm        $1" file.txt | sed 's/^.*SearchTerm  $1,//g' | sort | uniq -c | sort -nr'
    
por Evan 04.07.2015 / 06:00

1 resposta

0

$ 1 é o primeiro argumento para um script e você não está passando um argumento para ele no exemplo acima. Você poderia fazer isso funcionar criando um script file_count.sh:

#!/bin/sh
ssh user@host "grep \"SearchTerm        $1\" file.txt \
| sed 's/^.*SearchTerm  $1,//g' | sort | uniq -c | sort -nr"

ou outra ideia é criar um alias bash (ou equivalente ao seu shell):

bash$ search_count() { ssh user@host "grep \"SearchTerm        $1\" file.txt \
| sed 's/^.*SearchTerm  $1,//g' | sort | uniq -c | sort -nr"; }

bash$ search_count wally
      5 SearchTerm        wally
    
por phiz 04.07.2015 / 08:35