SSH 및 dockercli를 통해 실행되는 grep 패턴에 공백을 포함하는 방법

SSH 및 dockercli를 통해 실행되는 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\\\"\"'"

관련 정보