![따옴표와 백슬래시가 포함된 문자열을 어떻게 전송하나요?](https://linux55.com/image/15793/%EB%94%B0%EC%98%B4%ED%91%9C%EC%99%80%20%EB%B0%B1%EC%8A%AC%EB%9E%98%EC%8B%9C%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%A0%84%EC%86%A1%ED%95%98%EB%82%98%EC%9A%94%3F.png)
"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"