가끔 윈도우에서 생성된 텍스트파일을 리눅스로 옮겼을 때, 프로그램이 원하는대로 작동하지 않는 경우가 종종 있다.
석사 초기에 이런 문제가 있었을 때에는 대체 뭐가 문제야(..) 하고 몇 날을 고민했던 적도 있었던 것 같은데 (가물가물)
박사과정에 접어드니 몇 가지 확인해 볼 것의 우선순위가 잡히게 됐다.
그것 중에 하나가 ^M 으로 표시되거나, 아예 표시되지 않는 경우도 있는 개행문자 이다.
파일을 읽어 처리하는 프로그램에서 개행문자와 관련해서 에러가 발생하는데 도저히 어디가 문제인지 모를 때, 혹은 외부에서 받은 파일을 검토할 때 확인해야 하는 사항이라고 볼 수 있을 것 같고
- vi 로 텍스트 파일을 열었을 때 상태 표시줄에 [dos] 라고 표시되거나,
- 파일을 열었을 때 한 줄의 끝에 "^M" 표기가 되어있는 경우
아래와 같은 처리를 해 주면 리눅스 텍스트파일로 변환할 수 있다.
핵심은 < 파일 내 윈도우 기반 개행문자를 제거하는 것 > 이고
- 파일을 열어 vi 명령어로 처리할 수 있고
- 파일 밖에서 linux 명령어로 처리할 수 있고
- 한 줄 로 실행할 수 있는 perl 명령어로 처리할 수 있다.
경험상 이런 작업은 외부에서 받은 데이터를 검토하는 과정에서 진행했다.
파일을 직접 열어보고 제대로 된 파일인지, 운영체제에 따른 텍스트파일 형식 외에 다른 문제는 없는지 등을 확인하는 것과 겸해서 포맷을 수정해주고 저장했던 것 같다.
본문에서는 vi command 만 적으려고 한다.
왜냐면 아래 링크에 나머지 방법들이 있고, 다 갖다 쓰자니 복붙 같기도 하고 (..) 내가 올려놓고 보기 위해 필요한 것은 이거 하나면 되기도 해서 (??: 그럴거면 왜 블로그 하냐)....
아무튼
vi 에디터를 켠 상태에서 ESC 두어번 눌러준 뒤에 아래와 같이 타이핑해 주면
텍스트파일 상의 모든(g 옵션) 윈도우 기반 개행문자(^M)를 제거할 수 있다.
이 때 "^M" 은 "Ctrl + v + m" 이다
:%s/^M//g
[참고]
Convert between Unix and Windows text files
Convert between Unix and Windows text files Overview The format of Windows and Unix text files differs slightly. In Windows, lines end with both the line feed and carriage return ASCII characters, but Unix uses only a line feed. As a consequence, some Wind
kb.iu.edu
'Linux' 카테고리의 다른 글
cnv calling R package [cn.mops] 설치하기 (0) | 2022.07.24 |
---|---|
old version R ubuntu local에 설치하기 (0) | 2022.07.24 |
리스트를 파일로 만들어두고 grep 수행하기 (0) | 2021.05.15 |
[Genomics data processing] awk를 이용해서 bed format 을 chromosome 별로 분리하기 (0) | 2021.01.23 |