188*_*885 6 linux sed text-processing
我有多个带有以下文本的文件:
20~02~19~05-01-52
2249\\\2249\\\2249\\\2249\\\2249\\\2249\\\2248\\\
Run Code Online (Sandbox Code Playgroud)
我想使用 sed 或其他 Linux 命令来替换\\\换行符。
Qua*_*odo 13
sed 's|\\\\\\|\n|g' filename这样做,如果您使用的是 GNU sed。
如果你想要 POSIX sed,那么这应该可以工作(相当多的转义!):
sed 's|\\\\\\|\
|g' filename
Run Code Online (Sandbox Code Playgroud)
我会在这里使用 Perl,因为它具有更高级的正则表达式,可以轻松支持重复。所以,像这样:
$ perl -pe 's/\\{3}/\n/g' file
20~02~19~05-01-52
2249
2249
2249
2249
2249
2249
2248
Run Code Online (Sandbox Code Playgroud)
的-pe手段“施加由-e赋予它的脚本后打印每个输入线”。脚本本身只是用\换行符替换了每次出现的 3 次。我们需要\\而不是\因为\需要转义。
如果您sed支持它(GNU sed 支持),您可以使用相同的方法:
$ sed -E 's/\\{3}/\n/g' file
20~02~19~05-01-52
2249
2249
2249
2249
2249
2249
2248
Run Code Online (Sandbox Code Playgroud)