如何在cygwin中消除反引号中的CR

问题描述 投票:0回答:3

Windows 中的命令行实用程序在输出中添加 CRLF 作为换行符号。 有谁知道如何在运行 Windows 命令行实用程序时消除反引号中的 CR?

例如:

echo "Windows"
TEST=`cmd /c "echo Win"`
echo " ${TEST} " | od -t x1
echo "CYGWIN"
TEST=`echo Win`
echo " ${TEST} " | od -t x1

输出:

Windows
0000000 20 57 69 6e 0d 20 0a
0000007
CYGWIN
0000000 20 57 69 6e 20 0a
0000006

如您所见,Windows 的 echo 反引号会输出额外的 CR 符号

cygwin
3个回答
0
投票

您可以使用

tr

$ TEST="`cmd /c "echo Win"`"

$ echo  "${TEST}" |od -t x1
0000000 57 69 6e 0d 0a
0000005

$ echo  "${TEST}" | tr -d "\r" |od -t x1
0000000 57 69 6e 0a
0000004

请注意最后一个“ " 来自 cygwin echo,而不是来自 Windows CMD 输出。

$ echo  -n "${TEST}" |od -t x1
0000000 57 69 6e 0d
0000004

0
投票

您可以使用

d2u
(也称为
dos2unix
)cygwin 命令将行结尾从
CR LF
转换为
LF
。它可用于将文件就地转换为另一个文件,或用作管道中的过滤器。
d2u --help
提供简短的帮助。

u2d
(unix2dos) 命令以相反方向转换,
LF
CR LF
行结尾。


0
投票

如果可能 - 从 mintty 中运行脚本。

仅当脚本在 Windows CMD 终端中运行时才会添加 CR。

© www.soinside.com 2019 - 2024. All rights reserved.