dos2unix, perl, tr 및 sed가없는 파일에서 Ctrl-M을 제거하는 방법은 무엇입니까?


9

당신은 아주 오래된 유닉스 서버에서 작업 어디 가정 dos2unix, perl, tr, 그리고 sed존재하지 않습니다. 어떻게 dos 에서 unix 형식으로 파일을 변환 할 수 있습니까?


sed가 허용됩니까?
elmarco

@elmarco : 아니오 :(
Hemant

9
몇 살 유닉스 서버는하지에 있어야 않습니다 trsed? sedis old ........ iirc,
xenoterracide

1
ex또는 ed그와 같은 시스템에서 사용할 수? 또는 이 없으면 유닉스 라고 부르지 않을 것입니다 . trsed
MattBianco

3
아니 sed? 정말!? 관심이없는 시스템은 무엇입니까? Gilles와 MattBianco가 지적했듯이, 아마도 여전히 ed적어도 있을 것입니다 .
Mikel

답변:


12

줄 끝에서 캐럿 M을 제거하는 것을 언급한다고 생각합니다. vi에서 search와 replace를 사용하여이를 수행 할 수 있습니다.

vi에서는 일반적으로 다음을 수행합니다 (여기서 "^"는 CTRL을 나타냄).

:%s/^V^M//g

화면에 다음과 같이 표시됩니다.

:%s/^M//g

고마워 :). 휴대용 솔루션이라고 생각합니다.
Hemant

4
sed를 사용하여 파일을 vim하지 않고도 동일한 작업을 수행 할 수도 있습니다. sed -e '% s / ^ V ^ M // g'filename 또한 sed e '% s / ^로 화면에 표시됩니다. M // g 'filename 일반적으로 vim에서 파일을 검색 / 대체 할 수 있으면 명령은 sed에서 거의 동일합니다.
개브.

2
@gabe : sed 솔루션은 실제로 더 휴대용 +1 :)
wzzrd

@wzzrd, sed그리고 vi모두 POSIX에 의해 지정 하고, 그 vi명령은 빔 확장을 사용하지 않습니다.
와일드 카드

@jjclarkson 무엇을 ^V의미합니까 '^ M'?
cokedude

6

서버가 tr없거나 sed실제로 오래된 서버 이거나 일부 기본 명령이 누락되어 있어야합니다. 바라건대 ed; 그것은 유닉스 초판에 존재했다 .

ed /path/to/file
1,$s/^V^M$//
w
q

여기서 + 를 ^V^M입력 한 다음 + (리터럴 줄 바꿈을 입력)를 의미합니다. 모든 줄이 CR LF로 끝나는 것을 알고 있다면 대신 사용할 수 있습니다 (각 줄의 마지막 문자를 무차별 적으로 제거).CtrlVCtrlM1,$s/.$//

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.