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

operating systemlinuxmca

在 Windows 和 Unix 系统之间传输文件时,我们经常会遇到与行尾字符相关的问题。这是因为 Windows 中的 EOL 字符在 Unix 中无法识别。因此,要解决文件从 Windows 传输到 Unix 时出现的此问题,我们需要遵循以下方法之一。

使用 dos2unix

dos2unix 命令用于将 Windows 平台的 EOL 字符转换为 Unix 平台的 EOL 字符。大多数 Unix 系统都预装了此命令。下面我们将了解如何使用此命令转换文件本身或保存文件副本。

# 更改文件本身。
dos2unix file_name.txt
# 保存文件副本。
dos2unix -n file_name.txt new_file_name.txt

使用 sed

当我们将文件从 Windows 传输到 Unix 平台并打开阅读时,行尾字符显示为 ^M(称为 control-M)。因此,我们使用 sed 命令替换 ^M 字符。我们也可以将编辑后的文件保存为新文件。

sed 's/^M$//' file_name.txt > new_file_name.txt

使用 tr

tr 命令用于翻译或删除字符。在本例中,我们将使用它来删除 Windows 系统中文件中的行尾字符(如果行尾字符显示为 â\râ)。在 Unix 系统中打开时。

tr -d '\r' file_name.txt > new_file_name.txt

上述命令成功执行后,我们可以在 Unix 系统中成功打开文件,而不会显示 Windows 系统中的 EO L 值。


相关文章


有用资源