일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MLBB
- 게임기
- 모바일레전드
- English Joke
- 오라클
- Python
- 이솝우화
- 여행
- 가볼만한곳
- 오큘러스
- Chess-TD
- java program
- 심플한 게임
- Mobile Legends
- 롤
- 체스-TD
- 영어유머
- 왕좌의게임
- 골든게이트
- 영어 유머
- 게임
- oracle
- Imba Auto Chess
- OGGMA
- 영어독해
- 임바 오토체스
- english study
- 독해연습
- 관광
- 영어공부
- Today
- Total
Almost-Native
sed: -e expression #1, char 16: unknown option to `s' (DOS, UNIX 파일형식에 따른 에러) 본문
sed: -e expression #1, char 16: unknown option to `s' (DOS, UNIX 파일형식에 따른 에러)
2022. 7. 5. 21:45리눅스에서 간단한 sed 커맨드가 들어있는 Shell 프로그램을 실행하는데 아래와 같은 에러가 발생하였습니다.
sed: -e expression #1, char 16: unknown option to `s'
sed 커맨드를 사용하면서 뭔가 옵션을 잘못 썼나 하고 열심히 매뉴얼도 찾아보고 쌩쑈~를 하다가 황당한 데서 원인을 찾게 되었습니다.
아래와 같이 2개의 shell 스크립트 파일이 있습니다. 아주 단순한 sed 커맨드를 실행하는 구문이 들어있습니다.
두개의 shell 스크립트 파일 test1.sh 과 test2.sh 은 아래와 같이 정확히 똑같은 커맨드를 실행하고 있습니다.
헉;; 근데 왜 test1.sh 은 에러가 나고, test2.sh 은 에러가 안날까요??? 완전히 똑같은 것 같은데요~~~
파일사이즈를 보면 뭔가 다른게 있긴 합니다.
사실은 이 2개의 파일은 윈도우즈 PC에서 텍스트에디터로 만들어서 ftp 로 가져온 파일들입니다.
근데, 만들때 약간 다르게 만들어졌습니다.
test1.sh 은 DOS 형식으로, test2.sh 은 UNIX 형식의 텍스트 파일로 만들어진게 다릅니다.
DOS(Windows) 형식의 경우, 개행문자로 2byte(\r\n) 를 사용합니다.
UNIX(Linux) 형식의 경우, 개행문자로 1byte(\n) 을 사용합니다.
이런 차이로 앞에서 72 byte 와 71 byte 로 1바이트 차이가 난 것입니다.
근데, 그냥 차이만 나면 좋은데, 이게 쉘스크립트 실행할때 문제를 일으키는 경우가 있기 때문에 조심해야 합니다.
겨우 끝에 \r 문자 하나더 있다고 sed 커맨드에서 에러를 일으킬 줄이야~~~~
이런 황당한 에러를 방지하려면 Windows 에서 만든 쉘스크립트 텍스트 파일을 Unix 나 Linux 로 옮겨서 사용할 때는 반드시 파일형식을 Unix 로 변환해주는 것을 잊으면 안됩니다.
윈도우즈에서 변환할때는 AcroEdit 나 UtlraEdit 같은 텍스트 편집기 툴에 아래와같이 간단히 변환해주는 기능이 있습니다.
또는 Linux 에서 변환해주는 툴도 있습니다. dos2unix 라는 툴인데, 디폴트로 설치되어 있는 것은 아니라, 없으면 별도로 설치해줘야 합니다. ( $ yum install dos2unix -y )
test1.sh 이 DOS 형식이라 에러가 났었는데, dos2unix 툴로 변환후 더이상 에러가 안나는 것을 확인할 수 있습니다.
'Java 프로그램 개발, IT' 카테고리의 다른 글
자바 스윙 jEditorPane 하이라이트 색상 (Highlight Color) 넣기 (0) | 2022.07.10 |
---|---|
(오라클 PL/SQL 샘플) 세로 결과데이터를 가로로(한줄로) 출력하는 함수 (0) | 2022.07.08 |
파이썬 에러 oracledb.exceptions.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library (0) | 2022.06.26 |
파이썬 프로그램에서 Oracle DB 로 DRCP(공유커넥션풀링) 적용 샘플 (0) | 2022.06.22 |
리눅스 nohup: redirecting stderr to stdout 경고메시지 제거방법 (0) | 2022.06.21 |