gpt4 book ai didi

windows - 如何将 DOS/Windows 换行符 (CRLF) 转换为 Unix 换行符 (LF)

转载 作者:IT老高 更新时间:2023-10-28 12:16:13 28 4
gpt4 key购买 nike

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

dos2unixunix2dos 命令在某些系统上不可用。
如何使用 sedawktr 等命令模拟它们?

最佳答案

您可以使用 tr 将 DOS 转换为 Unix;但是,只有当 CR 仅作为 CRLF 字节对的第一个字节出现在您的文件中时,您才能安全地执行此操作。通常是这种情况。然后你使用:

tr -d '\015' <DOS-file >UNIX-file

请注意,DOS-file 的名称与 UNIX-file 的名称不同;如果您尝试使用相同的名称两次,则最终文件中将没有数据。

你不能反其道而行之(使用标准的 'tr')。

如果你知道如何在脚本中输入回车(control-Vcontrol-M进入control-M),那么:

sed 's/^M$//'     # DOS to Unix
sed 's/$/^M/' # Unix to DOS

'^M' 是 control-M 字符。也可以使用 bash ANSI-C Quoting 机制来指定回车:

sed $'s/\r$//'     # DOS to Unix
sed $'s/$/\r/' # Unix to DOS

但是,如果您必须经常这样做(粗略地说不止一次),安装转换程序(例如 dos2unixunix2dos ,或者可能是 dtouutod )并使用他们。

如果需要处理整个目录和子目录,可以使用zip:

zip -r -ll zipfile.zip somedir/
unzip zipfile.zip

这将创建一个 zip 存档,其中行尾从 CRLF 更改为 CR。 unzip 然后会将转换后的文件放回原处(并逐个文件询问您 - 您可以回答:Yes-to-all)。感谢@vmsnomad 指出这一点。

关于windows - 如何将 DOS/Windows 换行符 (CRLF) 转换为 Unix 换行符 (LF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613800/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com