我想使用带有空格的模式来 grep 远程服务器上的日志文件,例如。
grep 'words with spaces' log.txt
棘手的部分是我正在通过 ssh 执行远程 Dockercli 命令。就像是:
ssh hostname "dockercli exec -u username dockername grep 'sentence with spaces' logs/filename.log"
当容器执行 grep 命令时,多余的引号将被删除。我尝试过转义引号(命令永远不会返回)、反转顺序(“之前”)和 \s。
如何在通过 ssh 和 dockercli 执行的 grep 模式中包含空格?
答案1
我没有,dockercli
但也许一些用作sh -c
替代的实验可能会提供解析数据的类似命令。
为了检查是否grep
传递了正确的字符串,我将使用示例
echo 'a b' | ssh localhost "grep 'a b'"
这与包含 3 个空格的输入字符串匹配。如果我们添加一个额外的sh -c
层,我们需要
echo 'a b' | ssh localhost "sh -c 'grep \"a b\"'"
再次为
echo 'a b' | ssh localhost "sh -c 'sh -c \"grep \\\"a b\\\"\"'"