Answers:
使用此命令:
fromdos yourtextfile
另一种方式:
todos yourtextfile
这些命令可以在tofrodos软件包中找到(在最新发行版中),该软件包还提供了两个包装器unix2dos和dos2unix,它们模仿了同名的旧unix工具。
find . -name '*.txt' -print0 | xargs -null fromdos
使用dos2unix
。
dos2unix-DOS / MAC至UNIX文本文件格式转换器
dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...] Options: [-hkqV] [--help] [--keepdate] [--quiet] [--version]
我喜欢的Perl:
perl -lne 's/\r//g; print' winfile.txt > unixfile.txt
但这很适合我的用法,对我来说很容易记住。并非所有系统都具有dos2unix命令,但是我从事的大多数系统都具有perl解释器。
另一个是recode,它是dos2unix和iconv的强大替代品;它可以在Debian仓库的“ recode”包中找到:
recode ibmpc..lat1 winfile.txt # dos2unix
recode lat1..ibmpc unixfile.txt # unix2dos
对于awk粉丝:
awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt
...并sed:
sed 's/\r$//' winfile.txt > unixfile.txt
现在,与从我们的stackoverflow.com好友之一(可与牛肉解释器(位于您友好的邻里Debian存储库中)直接使用)中的十六进制编辑器中手动删除CR相比,仅需花费很少的精力,
dos2unix在脑干!
,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.
非常感谢jk浪费了他一小时的时间来写这篇文章!
我找到了一种非常简单的方法…使用nano打开文件:## nano file.txt
按Ctrl + O保存,但在按Enter之前,请按:Alt + D切换DOS和Unix / Linux线尾之间,或者:Alt + M切换Mac和Unix / Linux线尾之间,然后按Enter保存并Ctrl + X退出。
Alt+d
。有时alt会被终端程序拦截,因此您可以改用alt esc+d
。
如果要使用GUI方法,请尝试使用Kate文本编辑器(其他高级文本编辑器也可以处理此问题)。打开查找 / 替换对话框(Ctrl+ R),然后替换\r\n
为\n
。(注意:您需要从下拉列表中选择“正则表达式”,然后从选项中取消选择“仅选择”。)
编辑:或者,如果你只是想转换为Unix格式,然后使用菜单选项Tools
> End of Line
> Unix
。
\r\n
,\n
那么使用搜索/替换比记住哪个操作系统使用哪个行尾更容易。;)
将其粘贴到dos2unix.py Python脚本中。
#!/usr/bin/env python
"""\
convert dos linefeeds (crlf) to unix (lf)
usage: dos2unix.py <input> <output>
"""
import sys
if len(sys.argv[1:]) != 2:
sys.exit(__doc__)
content = ''
outsize = 0
with open(sys.argv[1], 'rb') as infile:
content = infile.read()
with open(sys.argv[2], 'wb') as output:
for line in content.splitlines():
outsize += len(line) + 1
output.write(line + '\n')
print("Done. Saved %s bytes." % (len(content)-outsize))
应该可以在安装了Python的任何平台上使用。公共区域。
CR LF
要LF
使用AWK:
awk -v RS='\r?\n' 1
command | awk -v RS='\r?\n' 1
awk -v RS='\r?\n' 1 filename
用法示例:
echo -e 'foo\nbar\r\nbaz' | awk -v RS='\r?\n' 1 | hexdump -C
说明:
-v RS='\r?\n'
将变量RS(输入 - [R的eCord 小号 eparator)到\r?\n
,这意味着输入由线读取线通过LF(分离\n
),其可以(?
中)可通过CR(前面\r
)。
1
是awk执行的脚本。脚本由组成condition { action }
。在这种情况下,1
条件为真。该动作被省略,因此执行默认动作,这意味着打印当前行(也可以写为{print $0}
或简单地{print}
)。
LF
到CR LF
:可以设置变量ORS
(ø安输出 ř的eCord 小号 eparator)修改输出的线端部。例:
echo -e 'foo\nbar\r\nbaz' | awk -v RS='\r?\n' -v ORS='\r\n' 1 | hexdump -C