我有一个命令,我知道当我远程访问一台机器并运行它时,它可以正常工作。命令如下:
grep "SearchTerm $1" file.txt | sed 's/^.*SearchTerm $1,//g' | sort | uniq -c | sort -nr
但是,当我尝试使用 在我的本地计算机上运行该命令时ssh
,它不再起作用。我认为这是因为我使用了引号,但我不确定该如何修复它。有什么建议吗?
ssh username@hostname 'grep "SearchTerm $1" file.txt | sed 's/^.*SearchTerm $1,//g' | sort | uniq -c | sort -nr'
答案1
$1 是脚本的第一个参数,而您在上面的例子中没有向它传递参数。您可以通过制作 file_count.sh 脚本来实现这一点:
#!/bin/sh
ssh user@host "grep \"SearchTerm $1\" file.txt \
| sed 's/^.*SearchTerm $1,//g' | sort | uniq -c | sort -nr"
或者另一个想法是创建一个 bash 别名(或与你的 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