예를 들어 공백이 포함된 패턴을 사용하여 원격 서버에서 로그 파일을 수집하고 싶습니다.
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\\\"\"'"