引用符とバックスラッシュを含む文字列をどのように転送しますか?

引用符とバックスラッシュを含む文字列をどのように転送しますか?

「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"

関連情報