sed在Linux或者Unix上删除/删除^ M回车符(换行/CRLF)

时间:2020-01-09 10:43:35  来源:igfitidea点击:

如何在UNIX或者Linux操作系统下使用sed从文本文件中删除^ M或者^ M(回车/换行)?
换行符只是行尾(EOL)。
它是一个特殊字符或者字符序列,表示文本行的结尾和新行的开头。
代表换行符的实际代码因操作系统而异。
例如,Microsoft Windows,DOS(MS-DOS,PC DOS等)使用" CR + LF"。

LF被Unix和类似Unix的系统使用,包括Linux,OS X,FreeBSD等。
步骤如下:

  • 执行以下sed命令以删除回车符(CR)
  • sed 's/\r//' input > output
  • 执行以下sed命令替换换行符(LF)
  • sed ':a;N;$!ba;s/\n//g' input > output

使用sed命令删除回车(CR)

替代命令的语法如下(要获取^ M类型的CTRL + V,然后是CTRL + M,即不要只输入克拉符号和大写的M。
它将不起作用):

sed -e 's/^M//g' input
sed -e 's/^M//g' input > output
# gnu sed syntax
sed -i 's/^M//g' input
# replace it with FOO
sed -i -e 's/^M/FOO/g' input

或者易于使用的sed语法在Unix或者Linux中删除回车符:

sed 's/\r$//' input > output
sed 's/\r$//g' input > output 
# GNU/sed syntax
sed -i 's/\r$//g' input

用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命令,如下所示:

cat -v input

关于在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