![解压文本文件后,内容格式发生变化](https://linux22.com/image/175430/%E8%A7%A3%E5%8E%8B%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E5%90%8E%EF%BC%8C%E5%86%85%E5%AE%B9%E6%A0%BC%E5%BC%8F%E5%8F%91%E7%94%9F%E5%8F%98%E5%8C%96.png)
我压缩了一些文本文件并作为附件发送到我的电子邮件中。提取文本文件后,它们的格式发生了变化。
前:
line1
line2
line3
后:
line1line2line3
有没有办法解压后保持原来的格式?
使用的命令:
zip file.zip *.txt
答案1
正如 Panki 所提到的,您正在尝试在 Windows 系统上打开 Linux 文本文件。
简短回答: 您想要的是保存 Windows 使用的带有 CRLF 行终止符(阅读长答案)的文本文件。为此,请使用 gedit(Gnome 的官方文本编辑器)打开文件。
- 在右上角击中3条水平线
- 另存为...
- 在最底部你应该看到一个名为的“菜单”行尾
- 选择视窗并点击保存。
你现在应该没事了。
长答案:
每个操作系统(大多数情况下)对换行符使用不同的转义序列
以供参考:
- Windows 使用 CRLF (\r\n) -hex value=0d 0a
- MAC OS 使用 CR (\r) - 十六进制值= 0d
- Linux 使用 LF (\n) - 十六进制值= 0a
因此,当您将文件从一个操作系统传输到另一个操作系统时(在您的情况下从 Linux 传输到 Windows),文本编辑器期望\r\n
但得到\n
.因此,您似乎缺少换行符。但事实并非如此。
当然,有一个解决方案。您可以使用考虑所有行终止的现代文本编辑器。例如 Notepad++、VScode、atom 等等。
您可以使用命令检查正在使用哪些线路终止技术file
。
$ file file*
file1: ASCII text
file2: ASCII text, with CR line terminators
file3: ASCII text, with CRLF line terminators
所有 3 个文件都只包含“test”一词。但从上面我们得出的结论是
- file1 使用 LF (linux)
- file2 使用 CR (MAC OS)
- file3 使用 CRLF (Windows)
您还可以通过使用来查看文本本身的差异od
$ od -t x1 file1
0000000 74 65 73 74 0a
0000006
$ od -t x1 file2
0000000 74 65 73 74 0d
0000006
$ od -t x1 file3
0000000 74 65 73 74 0d 0a
0000010
注意最后的区别。