如何在通过 ssh 和 dockercli 执行的 grep 模式中包含空格

如何在通过 ssh 和 dockercli 执行的 grep 模式中包含空格

我想使用带有空格的模式来 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\\\"\"'"

相关内容