따옴표와 백슬래시가 포함된 문자열을 어떻게 전송하나요?

따옴표와 백슬래시가 포함된 문자열을 어떻게 전송하나요?

"sed"를 사용하여 따옴표와 백슬래시가 포함된 파일의 문자열을 바꾸는 데 문제가 있습니다.

나는 이것을 시도했지만 성공하지 못했습니다.

sed -e 's/"\u001b[0;31mUnkwn\u001b[0m"/"UNKWOWN"/g' file.txt

입력하다:

"Vendor": "\u001b[0;31mUnknown\u001b[0m"

원하는 출력:

"Vendor": "Unknown"

답변1

다음과 같이 2개의 sed 명령을 연결할 수 있습니다.

sed 's,\\u001b\[0\;31m,,' | sed 's,\\u001b\[0m,,'

예:

$ echo '"Vendor": "\u001b[0;31mUnknown\u001b[0m"' | sed 's,\\u001b\[0\;31m,,' | sed 's,\\u001b\[0m,,'
"Vendor": "Unknown"

답변2

색상 패턴이 질문에 설명된 것과 유사한 경우 다음이 해결책이 될 수 있습니다.

$ foo='"Vendor": "\u001b[0;31mUnknown\u001b[0m"'
$ echo "$foo"  | sed 's/\\u[0-9a-z]*\[[;0-9]*m\(.*\)\\u[0-9a-z]*\[[;0-9]*m/\U\1/'
"Vendor": "UNKNOWN"

관련 정보