将Windows文件转换为Linux文件。

3
我在Linux服务器上运行shell脚本时,遇到了Windows文件的问题。我想知道是否有可能使用Java或Linux命令“转换”Windows创建的文件为Linux格式?
例如:
如果我上传一个在Windows中创建的CSV文件,在服务器上使用nano,我可以看到该文件以DOS格式保存。我可以使用M-D在DOS和Linux格式之间切换,并将其保存为Linux文件。
我的问题是是否可以通过Java(<-首选)或Linux命令实现此目的?
我尝试了删除回车符sed -i 's/{ctrl-v}{ctrl-m}//g' [file]但这并没有解决问题。

你是否提前知道一个文件是Linux文件还是Windows文件? - Angelo Fuchs
有几个命令可以实现这个功能。dos2unixunix2dos 分别用于删除和添加回车符。你也可以使用 tr 命令来删除回车字符,使用 tr -d \015 - ConcernedOfTunbridgeWells
4个回答

11

dos2unixunix2dos是来自于dos2unix软件包的Unix命令。


2
如果你在Ubuntu下找不到它们的原始名称,这些命令被称为fromdos和todos。 - matt freake
谢谢 - 这正是我需要的。还有 @Disco - 我需要那个信息 :) - My Head Hurts

4
如果您没有dos2unix实用程序,但已安装了 vim vi ,请执行以下操作:
打开您的文件: vi yourfile.csvvim yourfile.csv 将文件格式更改为Unix类型: :setlocal ff=unix 然后保存文件: :wq! 参考资料:http://vim.wikia.com/wiki/File_Format

这个回答应该得到更多的投票,因为它不需要安装任何软件包。对于提供参考资料给予+1。 - dbaltor

1
你可以使用包含FileReader的BufferedReader逐行读取文件,并对这些行进行任何你想要的操作(例如,将它们推送到具有正确行结束符的另一个文件中)。
File relFile = new File(".....");
BufferedReader read = new BufferedReader(new FileReader(relFile));
File targetFile = new File("....");
FileWriter fwri = new FileWriter(targetFile);
String line;
while ((line = read.readLine()) != null) {
    fwri.write(line+"\n"); // if you want the system line delimiter use the System property for that.
}
fwri.flush();
fwri.close();

0
使用vim来检查你的编码格式:
:set fileencoding

在Windows操作系统中,通常是使用GB2312编码,而在Linux中则是使用UTF-8编码。

因此,最好通过以下方法将其转换为Linux格式:

:set fileencoding=utf-8

然后通过:wq!保存它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接