sed 在 Linux 或 Unix 上删除/移除 ^M 回车符(换行符/CRLF)
如何^M在 UNIX 或 Linux 操作系统下使用 sed 从文本文件中删除(回车符/换行符)?
换行符就是行尾 (EOL)。它是一个特殊字符或字符序列,表示一行文本的结束和新行的开始。表示换行符的实际代码因操作系统而异。例如,Microsoft Windows、DOS(MS-DOS、PC DOS 等)使用CR+LF。Unix和类 Unix 系统(包括 Linux、OS X、FreeBSD 等)使用 LF 。
在 Unix 或 Linux 中查看回车符的 od 命令语法如下:
换行符就是行尾 (EOL)。它是一个特殊字符或字符序列,表示一行文本的结束和新行的开始。表示换行符的实际代码因操作系统而异。例如,Microsoft Windows、DOS(MS-DOS、PC DOS 等)使用CR+LF。Unix和类 Unix 系统(包括 Linux、OS X、FreeBSD 等)使用 LF 。
sed 在 Linux 或 Unix 上删除/移除 ^M 回车符(换行符/CRLF)
流程如下:
- 键入以下 sed 命令来删除回车符 (CR)
- sed 's/\r//' input > output
或者
sed 's/\r$//' in > out - 键入以下 sed 命令来替换换行符 (LF)
- sed ':a;N;$!ba;s/\n//g' input > output
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux、macOS/*BSD 或类 Unix 系统上的 sed |
预计阅读时间 | 3 分钟 |
使用 sed 命令删除 ^M 回车符 (CR)
替代命令语法如下
要获得^M输入CTRL+V,请键入CTRL+M。换句话说,请不要只输入插入符号 (^) 和大写字母M。另一种选择是键入printf '\r'以创建^M
sed -e 's/^M//g' input sed -e 's/^M//g' input > output # # programmatically print ^M using the printf command # sed -i "s/$(printf '\r')\$//" wp-config.php # Gnu sed syntax to update file in-place sed -i 's/^M//g' input # Replace ^M with FOO sed -i -e 's/^M/FOO/g' input # macOS/BSD replace ^M syntax sed "s/$(printf '\r')\$//" config.php > update.config.php sed -i'BAK' "s/$(printf '\r')\$//" config.php
或者在 Unix 或 Linux 中轻松使用 sed 语法删除回车符:
sed 's/\r$//' input > output sed 's/\r$//g' input > output # GNU/sed syntax to update file in-place sed -i 's/\r$//g' input # macOS/*BSD syntax to update file in-place sed -i'.BAK' 's/\r$//g' input sed "s/$(printf '\r')\$//" in.txt > out.txt sed -i'BAK' "s/$(printf '\r')\$//" in.txt
我们可以使用cat 命令^M来验证是否已被删除,如下所示:
cat -v out.txt
cat -v /path/to/filet
使用 sed 命令替换回车符 (CR)
语法是:
sed 's/\r/YOUR-replacement-TEXT-HERE/' input > output
sed 's/\r/YOUR-replacement-TEXT-HERE/g' input > output
sed 's/\r/foo/g' input > output
如何验证文本文件中的 ^M
使用cat 命令或 od 命令如下:
cat -v input
图 01:cat 和 sed 命令用于删除回车符和换行符(CRLF)
od -c filename
关于在 Unix 或 Linux 上使用 sed 删除或替换换行符 (LF) 的说明
如果不想删除 \n(新行),请使用以下语法:
sed -i ':a;N;$!ba;s/\n//g' input
或者
sed ':a;N;$!ba;s/\n//g' input > output
查看更多信息。
使用dos2unix 命令删除回车符
您还可以使用 dos2unix 命令将文本文件从 DOS 格式转换为 Unix 格式:
dos2unix input
dos2unix -b input
删除回车符的 tr 命令语法
要删除 CRLF:
tr -d '\r' < input > output
总结
您了解了如何在 Linux、macOS 和类 Unix 系统上删除 ^M 回车符。