5 sed text-processing regular-expression
我有一个 json 字符串,它有一个双重转义/单转义换行符的大杂烩。Json 解析器不允许其字符串值有单个反斜杠转义。
我需要统一使所有这些都进行双重转义
内容看起来像,
this newline must not be changed ---- \\n
this newline must be changed - \n
Run Code Online (Sandbox Code Playgroud)
当我运行 sed 命令时,
sed -i 's/([^\])\n/\\n/g' ~/Desktop/sedTest
Run Code Online (Sandbox Code Playgroud)
它不会取代任何东西
([^\])
,这种模式用于不改变\n
已经有一个反斜杠的。
尝试
sed -i 's,\([^\\]\)\\n,\1\\\\n,' file
sed -i 's,\([^\]\)\\n,\1\\\\n,' file
Run Code Online (Sandbox Code Playgroud)
在哪里
\
必须通过以下方式逃脱\\\\
\( .. \)
是捕获模式\1
右侧是第一个捕获的模式。\
。[^\]
您需要保留该模式,否则它将被丢弃。