2014-04-28 3 views
1

누구나 이것이 무엇을 의미하는지 알고 있습니까? bash 입출력 파일의 sed 명령

\r

은 캐리지 리턴 (CR)을 의미

그래서 아마도 반환 운송의 공백을 스왑 :

sed -e 's/\r$//' inputfile > outputfile 

이것은 내가 지금까지 가지고 무엇인가? 입력 파일에? 정말 확실하지 않습니다.

답변

2

이 파일은 CRLF- 마지막 줄에서 LF- 끝나는 줄로 변경됩니다. 전자는 각 줄이 캐리지 리턴/줄 바꿈 (CRLF 또는 \r\n)으로 끝나는 Windows 형식 파일 인 경향이 있습니다.

UNIX 유형 파일에는 개행 문자 (LF 또는 \n) 만 있습니다.

특히 아무것도 ($로 나타낸) 라인의 끝에서 그 sed 명령 대체품 \rs/xyzzy/plugh/와 동일 plugh으로 행의 최초 xyzzy을 변경할 것이다.

2

sed은 호출하는 프로그램의 이름입니다.

-e은 다음 인수가 실행할 표현식임을 sed에게 알립니다.

s/\r$//은 대체입니다. sed는 줄 끝 부분에있는 캐리지 리턴을 아무 것도 대체하지 말라고 말합니다. Sed는 각 라인마다 그렇게합니다.

inputfile은 sed가 입력을 읽는 파일입니다.

>은 리디렉션 연산자이므로 sed의 출력이 outputfile으로 리디렉션됩니다.

기본적으로 결과는 dos2unix (때로는 fromdos으로 바뀜)과 동일해야합니다.

+0

감사합니다. 그 차이점이 무엇인지 아십니까? sed -e 's/$/\ r /'inputfile> 출력 파일 캐리지 리턴을 빈 공간으로 바꾸라고 말한 것 같습니다. – user3576917

+0

@ user3576917 : 아니요. 행 끝 ('$')을 캐리지 리턴 ('\ r')으로 바꿉니다. 대안을 보려면'unix2dos' 또는'todos'를보십시오. – choroba