sedパターンは「with \」と\を\ \に置き換えます(json文字列を除く)。

sedパターンは「with \」と\を\ \に置き換えます(json文字列を除く)。

"jsonを除いて\"置き換える\のに問題があります。\\"

test.txt入力ファイル

"a"     "b"     
{"1":"female","2":"197312","3":"359","4":"201109","5":"mail"}
\uff08\u524d\u5bfe\u5fdc

次のようなものを出力したい

\"a\"     \"b\"     
{"1":"female","2":"197312","3":"359","4":"201109","5":"mail"}
\\uff08\\u524d\\u5bfe\\u5fdc

ベストアンサー1

より強力になるために、完全なjson解析を実行できます。

perl -0777 -pe '
  s@(".*?"|\\)|(\{(?:"(?:\\.|[^"])*+"|(?2)|[^"{}]++)*+\})|[^{}\\"]+@
  $1 ? $1 =~ s/["\\]/\\$&/gr : $&@gse'

どんな入力が同じですか?

"a"     "b"     "c{d"
{"1":"female","2":"197312","3":"359","4":"201109","5":"mail"}
{
  "1": {"x": "y"}
  "2": "}}}"
  "3": ["{\"x", "}"]
}
\uff08\u524d\u5bfe\u5fdc

与えられた

\"a\"     \"b\"     \"c{d\"
{"1":"female","2":"197312","3":"359","4":"201109","5":"mail"}
{
  "1": {"x": "y"}
  "2": "}}}"
  "3": ["{\"x", "}"]
}
\\uff08\\u524d\\u5bfe\\u5fdc

"foo\"bar"入力にjsonオブジェクトが含まれている"foo\nbar"場合、またはjsonオブジェクトの外部にある場合は、実行したい操作を明確にすることができます。

おすすめ記事