참조하십시오 다음의 간단한 명령에 사용 된 백 슬래시를 처리하기 위해? "\ U"가 먹 혔어. 다른 백 슬래시도 생존하지 못합니다.어떻게 나오지
질문은 위 명령을 예상대로 작동시키는 방법입니까?
코드가 실제 해결책이 아님을 유의하십시오. 나는 설명하기 쉽다. 변수를 사용해야하고 변수에 백 슬래시가 있어야합니다.
의견을주십시오. 고맙습니다!
XM
참조하십시오 다음의 간단한 명령에 사용 된 백 슬래시를 처리하기 위해? "\ U"가 먹 혔어. 다른 백 슬래시도 생존하지 못합니다.어떻게 나오지
질문은 위 명령을 예상대로 작동시키는 방법입니까?
코드가 실제 해결책이 아님을 유의하십시오. 나는 설명하기 쉽다. 변수를 사용해야하고 변수에 백 슬래시가 있어야합니다.
의견을주십시오. 고맙습니다!
XM
을 통해 자체 TMP $를 재분석 수, 다음 시도 :
echo "a" | sed "s|a|${tmp//\\/\\\\}|g"
혼란스러운 점이 있으십니까? \\
은 쉘에서 이스케이프해야하기 때문에 하나의 \를 나타냅니다. //
의 //
은 s/foo/bar/g
의 g
수식어와 유사합니다. 첫 번째 발생 패턴 만 바꾸려면 건너 뜁니다.
${parameter/pattern/string}
에 대한 문서가 여기에 있습니다 :
편집 http://www.gnu.org/s/bash/manual/bash.html#Shell-Parameter-Expansion : 당신이 무엇을 원하는에 따라이 사실에 대한 나오지도 사용하지 않는 더 좋을 수 있습니다.
$ tmp="UY\U[_"
$ in="a"
$ echo ${in//a/$tmp}
UY\U[_
가 나오지도하고 그냥 충분 이스케이프 "먹어"에만 백 슬래시 있다면 당신은 나오지도
echo "a" | sed "s|a|$(echo ${tmp} | sed 's|\\|\\\\|g')|g"
나는이있어,이 솔루션을 시도 : $가 에코를 $ tmp를 \ UB $ 에코 "는"| sed "s | a | $ (echo $ {tmp} | sed 's | \\ | \\\\ | g') | g" \ UB 확실하지 않습니다. 파이프와 sed가 적기 때문에 다른 솔루션을 선택했습니다. 나는 아직도 당신의 대답에 감사드립니다. –
나는이 해결책을 골랐다. 고맙습니다! 나는 파일을 처리하는 데 sed를 사용하고있다. 암호문은 암호화 된 암호입니다. –