2017-09-08 1 views
1

Windows의 명령 줄 유틸리티는 출력에 새 라인 기호로 CRLF를 추가합니다. Windows 명령 줄 유틸리티를 실행하는 동안 누구도 CR을 배제하는 방법을 알고 있습니까? 예를 들어cygwin에서 백틱에서 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 

당신이 볼 수 있듯이, 윈도우에서 에코의 역 따옴표가 출력 추가 CR 기호

+0

Cygwin에서 백틱 결과에서 CRLF 기호를 제거해야하지만 LF 기호 만 제거해야합니다. Windows 및 Linux에서 다른 결과를 얻습니다. Windows에서 결과에 추가 CR 기호가 있으며 예를 들어 Linux에서 작동하는 문자열 비교는 Windows에서 실패합니다. 그래서 Cygwin에서 몇 가지 옵션이 변경 될 수도 있고 Cygwin의 버그 일 수도 있습니다. – Nik

답변

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 

마지막 "\ n"은 Windows CMD 출력이 아닌 cygwin 에코에서 나옵니다.

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

당신은 CR LF에서 LF에 라인 엔딩을 변환 할 d2u (또한 dos2unix) Cygwin에서 명령을 사용할 수 있습니다. 파일을 현재 위치에서 다른 파일로 또는 파이프 라인의 필터로 변환하는 데 사용할 수 있습니다. d2u --help은 간단한 도움을 제공합니다.

u2d (unix2dos) 명령은 반대 방향으로 LF에서 CR LF 줄 끝까지 변환합니다.

관련 문제