我有一个包含带有换行符的字符串的文件,如下所示:
{"name": "John\n\nMeyer"}
{"name": "Mary\n\nSmith"}
如何使用tr
工具删除它们?
我正在尝试,但是输出不好:
$ cat f.json | tr -s '\\n\\n' ' '
{" ame": "Joh Meyer"}
{" ame": "Mary Smith"}
使用Perl,相同的正则表达式可以正常工作:
$ cat f.json | perl -pe 's/\\n\\n/ /g'
{"name": "John Meyer"}
{"name": "Mary Smith"}
尝试使用-d
的tr
选项删除字符:
tr -d \\n
全部放在一起:
cat f.json | tr -d \\n
您不需要-s
选项。 -s
的tr
选项表示“压缩”。如果指定字符出现多次(保留一个字符),则挤压将删除该字符。
或者,为避免不必要地使用cat and pipe,您可以只编写如下代码:
tr -d \\n <f.json
另外一个注意事项:如果您的输入内容实际上没有换行符,而是反斜杠后跟一个'en',则不能使用tr
删除它们-tr
适用于单个字符。