2012-05-23 69 views
1

我正在將我的代碼從UNIX遷移到LINUX,我知道unix2dos命令在SUSE 11.0中不可用。請讓我知道如果Unix到Linux的遷移 - unix2dos

alias unix2dos='recode lat1..ibmpc' 

將具有與unix2dos相同的效果?

+0

爲什麼不映射unix2dos'上的unix框上的行結尾,只能將映射的文件轉移到Linux上? –

+0

因爲我的代碼在Linux上運行時,可能沒有UNIX。 –

+1

爲什麼要從unix遷移到linux轉換行尾的原因?他們使用相同的約定。 – mata

回答

3

我不知道重新編碼,但sed -i 's/$/\r/'會做與unix2dos相同的事情。

+0

其實我有很大的文件和sed/perl可以降低性能。 –

+2

我無法想象任何* nix工具比'sed'更快完成這個工作。在一個大文件上給它一個鏡頭,看看速度是多少。 –

+1

@SachinChourasiya它[出現](http://www.informatik.uni-hamburg.de/RZ/software/gnu/utilities/recode_3.html#SEC8)'recode'用於在字符編碼之間切換。這幾乎*保證*比'sed'版本慢,它只是在每行上添加字符而不是將整個文件重新映射到新的編碼。 –

0

使用recode似乎有風險,它用於轉換字符集,而不僅僅是改變換行符。我沒有使用過recode,但是如果它們被編碼在例如文件中,我恐怕你可能會破壞你的文件。 UTF-8而不是Latin1。

我不知道在SUSE中找到了哪些軟件包,但可能有unix2dos的替代方法之一,如todos(在Debian的包中找到tofromdos)。

使用sed作爲其他建議應該很好。如果您真的擔心性能,可以將sed的性能與awk '{print $0 "\r"}'進行比較 - 我無法確定哪種情況會在您的情況下更快,但是對您的文件樣本進行測量並不會造成什麼影響。

0

裝入文件(S)到VIM,然後

:set ff=dos - 更改到DOS行結束(CRLF)

:set ff=unix - 更改到Unix行結尾(LF)

+1

在vim中加載大文件可能需要* loooong *時間來渲染。另外,你不能直接從命令行執行它。 –

+0

@TimPote:從vim命令行在這裏可以正常工作。我沒有直接從調用命令行(bash,cmd.exe等)進行測試。花幾秒鐘在vim中加載一個20兆字節的文件並將其轉換。對我來說足夠了。 – JimR