如何 sed 包含引号和反斜杠的字符串?

如何 sed 包含引号和反斜杠的字符串?

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

相关内容