【发布时间】:2018-02-18 04:31:15
【问题描述】:
我正在使用 Windows 10 和草莓 Perl
众所周知,Linux 中的行终止符是\n,而Windows 中是\r\n。
我发现,在我的电脑上,Linux类型的文件在进行类似替换操作后会自动转换为windows类型\r\n
perl -i.bak -pe "s/aaa/bbb/g" test.txt
但这不是我想要的,而且似乎不合理。我想知道这是 Strawberry Perl 问题还是其他因素?
如何让行终止符在 Windows 上不受影响?
【问题讨论】:
-
“但这不是我想要的,而且似乎不合理” 为什么你认为 perl 假设它应该在一个操作系统上读写标准 Windows 文件是不合理的? Windows 系统,除非你另有说明?
-
嗨,@Borodin。因为 perl 隐含地做了一些事情,我认为在 windows 上使用
\n专门作为换行符没有任何问题。实际上,我将 unix 格式设置为 notepad++ 默认值,这是我的主编辑器。这对我来说很重要,因为我同时在 windows 桌面和 linux 服务器上工作。 -
"你能举个例子,\n 会导致 windows 程序出现问题吗?" 这完全取决于每个应用程序是如何编写的,你必须在上面测试所有内容Windows 以确保它在数据中没有 CR 字符的情况下正常工作。可能的影响是程序将在文件中找不到行终止符,因此会将整个内容作为单个记录读取。我知道记事本将无法正确读取文件,并且可能还有许多其他示例。这将根据应用程序产生许多影响,但大多数事情根本不起作用。
-
“我实际上并没有在 Windows 上使用太多命令行” 那么听起来你真的无法分支并使用非Windows 上的标准文件格式。我建议你应该等到你对系统更加熟悉后再做出如此极端的决定。
-
也许您需要在 Stack Overflow 上提出一个问题:“在 Windows 系统上将我的所有文件保存为 Linux 格式有什么问题吗?”。您还应该阅读Do not change Linux files using Windows apps and tools