문자 코드가 포함된 문자열을 인용 형식으로 변환하는 방법

문자 코드가 포함된 문자열을 인용 형식으로 변환하는 방법

비슷한 문자열이 있습니다 New\x20Folder. 특수 문자는 해당 코드로 표시됩니다. 문자열을 인용 형식으로 변환하고 싶습니다: "New Folder".

사용할 수 있는 유일한 도구는 bash와 sed와 같은 표준 유틸리티입니다.

첫 번째 양식은 udev 환경 변수에 의해 생성됩니다 ID_FS_LABEL_ENC. autofs 구성 파일은 필수 형식을 사용합니다. 인용된 문자열이 필요합니다.

답변1

백슬래시 자체도 문자열( \x5c아마도) 에서 이스케이프된다고 가정하면 udevBash의printf내장:

printf -v translated '"%b"' "$ID_FS_LABEL_ENC"

예제 문자열을 사용해 보면 다음과 같습니다.

$ ID_FS_LABEL_ENC='New\x20Folder'
$ printf -v translated '"%b"' "$ID_FS_LABEL_ENC"
$ echo "Translated to: '$translated'"
Translated to: '"New Folder"'

원하시는 변화를 받아드립니다.

printf -v백슬래시 이스케이프 시퀀스를 수행하는 Bash 확장 형식으로 표준 스타일 번역 결과를 printf변수에 할당합니다. %b이는 이름에 이상하지만 합법적인 문자가 포함된 흥미로운 비즈니스의 영향을 받지 않으며 문자열 재작성이 필요하지 않습니다.

답변2

이 시도:

string=$'New\x20Folder'

또는

string="New\x20Folder"
string="$(echo -e "$string")"

관련 정보