Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在cygwin中消除回跳中的CR_Cygwin - Fatal编程技术网

如何在cygwin中消除回跳中的CR

如何在cygwin中消除回跳中的CR,cygwin,Cygwin,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

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的回音的反勾号输出额外的CR符号

您可以使用
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
请注意,最后一个“\n”来自cygwin echo,而不是windows CMD输出

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

您可以使用
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
请注意,最后一个“\n”来自cygwin echo,而不是windows CMD输出

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

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


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

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


u2d
(unix2dos)命令以相反方向将
LF
转换为
CR-LF
行结束。

Cygwin似乎必须从反勾选结果中删除CRLF符号,但只删除LF符号。它在Windows和Linux上得到不同的结果。Windows上的结果有额外的CR符号,例如,在Linux中工作的字符串比较在Windows中失败。所以我认为Cygwin中有一些选项可能会改变它,或者它是Cygwin中的一个bug。看起来Cygwin必须从backtick结果中删除CRLF符号,但只删除LF符号。它在Windows和Linux上得到不同的结果。Windows上的结果有额外的CR符号,例如,在Linux中工作的字符串比较在Windows中失败。所以我希望Cygwin中有一些选项可以改变它,或者它是Cygwin中的一个bug。