怎么在window下把windows生成的文本文件转换成linux形式的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么在window下把windows生成的文本文件转换成linux形式的相关的知识,希望对你有一定的参考价值。
已经解决了,主要是脚本文件在linux下识别不了win下的^M,直接用二进制输入linux的回车就可以了。谢谢大家
在Windows下换行时,有两个字符:回车(/r)和换行(/n)。但在Linux下,只有一个换行(/n)可使用unix2dos和dos2unix命令进行格式的转换:
参数:
-k 保持输出文件和输入文件的日期时间戳不变
-o file 默认模式 . 将file转换,并输出到file
-n infile outfile 新模式. 转换infile, 并输出到outfile
1. unix2dos
假设用vi新建一文本文件,输入123456
[root@centos test]# ls -l a.txt
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
[root@centos test]# hexdump -c a.txt
0000000 1 2 3 4 5 6 /n
0000007
[root@centos test]# unix2dos -n a.txt b.txt
unix2dos: converting file a.txt to file b.txt in DOS format ...
[root@centos test]# ls -l
total 8
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
-rw------- 1 root root 8 Jan 7 21:34 b.txt
[root@centos test]# hexdump -c a.txt
0000000 1 2 3 4 5 6 /n
0000007
[root@centos test]# hexdump -c b.txt
0000000 1 2 3 4 5 6 /r /n
0000008
b.txt是转换后的DOS下的文件
2. dos2unix
[root@centos test]# dos2unix -n b.txt c.txt
dos2unix: converting file b.txt to file c.txt in UNIX format ...
[root@centos test]# ls -l
total 12
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
-rw------- 1 root root 8 Jan 7 21:34 b.txt
-rw------- 1 root root 7 Jan 7 21:38 c.txt
[root@centos test]# hexdump -c b.txt
0000000 1 2 3 4 5 6 /r /n
0000008
[root@centos test]# hexdump -c c.txt
0000000 1 2 3 4 5 6 /n
0000007
c.txt是转换后unix下的文本文件 参考技术A 文本在两个系统下通用的,无非两个问题:1 编码,2 换行
给你在Linux的两个命令解决:
iconv 转换编码
#iconv -f gbk -t utf8 filename
dos2unix 转换换行
#dos2unix filename本回答被提问者和网友采纳 参考技术B 每个文本传输或者文本编辑软件,对这个定义都不一样。容易搞错。
最好的办法就是,在你windows的txt通过ctr+c, 然后在linux终端那里vi编辑文件,然后ctr+v 参考技术C 找个工具比如UE,打开后另存,选UTF-8编码,;linux换行符 参考技术D 什么意思?不是通用的吗?我在ubuntu下依旧可以打开windows的文件啊
使用在 windows 2000 中运行的 PHP 使用 mozilla 版本 10 生成带有新行的文本文件
【中文标题】使用在 windows 2000 中运行的 PHP 使用 mozilla 版本 10 生成带有新行的文本文件【英文标题】:Generate text file with new line using PHP running in windows 2000 using mozilla version 10 【发布时间】:2020-03-07 16:28:59 【问题描述】:我正在使用 PHP 生成一个文本文件,该文件用于装有 windows 2000 操作系统和 mozilla firefox 浏览器的计算机(请不要问为什么)。该文件在 windows 10 和最新版本的火狐上正确生成并运行流畅。
我现在的问题是新行在旧版本(windows 2000 OS 和 firefox 10)中不渲染
我试过用ff:
1. /n
2. /r/n
3. <br>
4. $string = "This\r\nis\n\ra\nstring\r"; echo nl2br($string);
5. PHP_EOL
所有都没有生成所需的输出。它只是将 BR 附加为文本
代码是:
header("Content-Type: text/html; charset=UTF-8");
header("Content-Type: multipart/form-data; boundary=something");
header("Content-Length: ".strlen($data)."");
header("Content-Disposition: attachment; filename=".$_GET['name']."");
echo nl2br(base64_decode($data));
示例文本为:"Assembly Lot Summary Report " . "\r\n" . "\r\n" ;
FYI
: Notepad(only) 用于打开文本文件
【问题讨论】:
添加最小的 HTML 结构:<html><head></head><body>your text here</body></html>
。首先创建静态文件会有所帮助。也许浏览器会漏检。
@DanielSęk 它适用于较新的操作系统和 mozilla firefox 版本。新行按预期添加。我唯一的假设是因为 mozilla 和操作系统的版本太旧了
您想为记事本生成纯文本文件(在这种情况下使用nl2br
没有意义)或HTML 文件以在浏览器中打开(在这种情况下<br>
将被正确解释) .
不幸的是要求是使用记事本
确保生成的文件有\r\n
行结束。较旧的记事本(例如在 Windows XP 中)无法正确处理仅以 \n
结尾的行尾。使用@Jimmix 所写的text/plain
,不要使用nl2br
。使用十六进制编辑器查找生成的行尾。您还可以手动转换行尾(取决于客户端计算机)并将文件作为application/octet-stream
(二进制流)发送。
【参考方案1】:
如果您想在文本编辑器中按回车键时以相同的方式换行,那么标题应该是:
Content-Type: text/plain
而不是
Content-Type: text/html;
因此网络浏览器确切地知道您要传递一个文本文件。
您可以通过检查页面源来仔细检查新行是否返回到浏览器 - 转到菜单 > 编辑 > 查看源或点击 CTR+U
我也会尝试删除这一行:
header("Content-Type: multipart/form-data; boundary=something");
看看有没有帮助。
为了从 php 生成新行,你可以使用:
echo "\n";
或
echo PHP_EOL;
它将为您提供取决于 Web 服务器 操作系统的新产品线 - 对于 Linux 和 Windows 不同。
这些在 PHP 中是不正确的:/r
或 /n
。您需要使用反斜杠,并且它们仅在使用双引号“\n”more read 时才有效。
更多阅读text/plain
【讨论】:
我没有使用文本的原因是因为使用 时它只会输出 我使用\n
。还是没用以上是关于怎么在window下把windows生成的文本文件转换成linux形式的的主要内容,如果未能解决你的问题,请参考以下文章
怎么用PuTTY工具在Linux系统下把压缩文件解压到指定目录文件夹下?怎么写语句?