2010-03-24 4 views
0

AIX에서 다음 명령을 사용하여 파일에서 캐리지 리턴 (\r)을 제거하려고하지만 또한 마지막 행을 제거합니다. 어떤 제안?마지막 줄을 자르는 Sed 스크립트 명령

sed -e 's/\r\n/\n/g' ./excprule > ./excprule.tst 

명령 순서 :

 
dev1:> sed -e 's/\r\n/\n/g' ./test_file > ./test_file.tst 
dev1:> diff test_file.tst test_file 
diff: 0653-827 Missing newline at the end of file test_file. 
26a27 
> Trailer 25 

편집 : 펄과 같은 일을 수행하여 해결 방법을 찾았지만 문제가 해결되지 않는 이유를 알고 싶습니다.

+3

diff는 원본 파일에 대해 불평하는 것 같습니다. 기본적으로 \ r으로 끝나고 \ n으로 끝나야합니다. 그러면 sed 명령에 잘못된 것이 없습니다. – tonio

답변

1

이 나오지으로, 그러나, AIX에있는 경우는 현재 라인 (매뉴얼 페이지를 참조)를 처리 할 때마다 당신은 또한 줄 바꿈 떨어져

sed '$!{:a;N;s/\r\n/\n/;ta}' file 

나오지 스트립을 DOS2UNIX 사용할 수 있습니다, 그래서 당신은하지 않습니다 실제로 \r\n을 찾으십시오.

+0

'\ r'을 삭제하는 것이 dos2unix 일 것이라고 생각하십니까? – Cascabel

+0

예, 맞습니다. 거꾸로되었습니다. – ghostdog74

+1

왜 단순히 사용하지 마십시오 'tr '\ r' '' '< file.in > file.out'? – tonio

관련 문제