如何在BASH脚本中将DOS/Windows换行符(CRLF)转换为Unix换行符(LF)?

如何在BASH脚本中将DOS/Windows换行符(CRLF)转换为Unix换行符(LF)?

如何以编程方式(即,不使用vi)将DOS/Windows新行转换为Unix?

这个dos2unixunix2dos命令在某些系统上不可用。我怎样才能用这样的命令来模仿这些sed/awk/tr?


慕斯709654
浏览 1872回答 3
3回答

翻翻过去那场雪

你可以用tr要从DOS转换到Unix,只有当CR仅作为CRLF字节对的第一个字节出现在您的文件中时,才能安全地执行此操作。通常情况是这样的。然后使用:tr&nbsp;-d&nbsp;'\015'&nbsp;<DOS-file&nbsp;>UNIX-file注意这个名字DOS-file与名字不同UNIX-file如果您尝试使用相同的名称两次,您将结束在文件中没有数据。你不能反过来(用标准的“tr”)。如果您知道如何输入马车,请返回到脚本中(控制-V,&nbsp;控制-M若要输入Control-M),则:sed&nbsp;'s/^M$//'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;DOS&nbsp;to&nbsp;Unixsed&nbsp;'s/$/^M/'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Unix&nbsp;to&nbsp;DOS其中‘^M’是控件-M字符。您还可以使用bash&nbsp;Ansi-C引用指定运输返回的机制:sed&nbsp;$'s/\r$//'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;DOS&nbsp;to&nbsp;Unixsed&nbsp;$'s/$/\r/'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Unix&nbsp;to&nbsp;DOS但是,如果您需要经常这样做(粗略地说,不止一次),那么安装转换程序就更明智了。dos2unix和unix2dos,或者也许dtou和utod)并使用它们。

波斯汪

tr&nbsp;-d&nbsp;"\r"&nbsp;<&nbsp;file瞧一瞧这里例如使用sed:# IN UNIX ENVIRONMENT: convert DOS newlines (CR/LF) to Unix format.sed 's/.$//'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# assumes that all lines end with CR/LFsed 's/^M$//'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # in bash/tcsh, press Ctrl-V then Ctrl-Msed 's/\x0D$//'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # works on ssed, gsed 3.02.80 or higher# IN UNIX ENVIRONMENT: convert Unix newlines (LF) to DOS format.sed "s/$/`echo -e \\\r`/"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # command line under kshsed 's/$'"/`echo \\\r`/"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# command line under bashsed "s/$/`echo \\\r`/"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# command line under zshsed 's/$/\r/'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # gsed 3.02.80 or higher使用sed -i用于就地转换。sed -i 's/..../' file.

LEATH

在POSIX中这样做是很棘手的:POSIX SED不支持\r或\15..即使它做到了,就地选项-i不是POSIXPOSIX Awk支持\r和\15,但是-i inplace选项不是POSIXd2u和剂量2不是POSIX公用事业,但是前是POSIX ex不支持\r,&nbsp;\15,&nbsp;\n或\12移除回程:ex&nbsp;-bsc&nbsp;'%!awk&nbsp;"{sub(/\r/,\"\")}1"'&nbsp;-cx&nbsp;file若要添加回车:ex&nbsp;-bsc&nbsp;'%!awk&nbsp;"{sub(/$/,\"\r\")}1"'&nbsp;-cx&nbsp;file
打开App,查看更多内容
随时随地看视频慕课网APP