我在尝试使用“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"