特别是我试图将所有转换\r\n
为\r\r\n
. 这是因为 iCloud 的 IMAP 服务器发送\r\r\n
破坏了协议和所有敏感性(我唯一的工作理论是他们这样做了,所以他们只会在几年前发布他们自己的 IMAP 客户端),我需要编写单元测试来模拟这一点。
由于它们如何处理行尾,因此要使其在标准 unix 工具中工作非常棘手。
sed 's/\r\n/\r\r\n/g'
- 不,什么都不做
sed 's/\r/\r\r/g'
- 什么也不做
tr
在处理字符串方面做得不好;它只对单个字符起作用,并且似乎保留了 # 个字符。
我实际上不确定如何使用 Unix 工具来做这么低级的事情。最坏的情况下,我可以用几行 C 语言做到这一点,但我想学习如何更标准地做到这一点。
根据 Jim 的回答中的讨论,Mac OS X (BSD) 上的 sed 版本似乎与 Linux 的行为不同。理想情况下,我需要一个 Mac 解决方案,尽管我或多或少可以在另一台机器上完成这项工作。