![sed 및 특수 문자가 포함된 pssh](https://linux55.com/image/133875/sed%20%EB%B0%8F%20%ED%8A%B9%EC%88%98%20%EB%AC%B8%EC%9E%90%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20pssh.png)
이 sed를 실행하고 싶습니다.
sed "s?\(Defaults.*\)?\1:/etc/bla/foo/?" filename
그러나 pssh로 실행하면 실패하고 오류 코드 1로 종료됩니다.
pssh -h /root/listofservers -l root -A "sed "s?\(Defaults.*\)?\1:/etc/bla/foo/?" filename"
답변1
pssh
다음과 같은 사용량 요약이 있습니다.
pssh [options] command ...
즉, 원격 호스트에서 실행하려는 명령을 인용하지 마십시오. 그렇지 않으면 인용된 전체 명령을 명령의 이름으로 처리합니다. 또한 작은따옴표로 묶인 문자열은 sed
표현식처럼 정적입니다.
제안:
pssh -h /root/listofservers -l root -A sed 's#\(Defaults.*\)#\1:/etc/bla/foo/#' filename
나는 또한 정규식 문자 이기 ?
때문에 변경했습니다. 여기서는 아무런 차이가 없지만 표현식을 구문 분석하려고 할 때 잠시 혼란스러웠습니다.#
?