Press "Enter" to skip to content

[태그:] 텍스트

리눅스 텍스트파일 한글깨짐 고쳐보기

오래된 프로그램 소스나 텍스트 파일에서 한글깨진 파일이 있을 경우가 있다.

일단 예전 파일이 요즘쓰는 utf-8로 변환되어 있지 않아서 나타나는 현상이 대부분이다.

현재 리눅스 시스템이 어떤 인코딩 타입을 사용하고 있는지 알아보자

# locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

UTF-8을 사용하고 있군요.

다음. 한글이 깨지는 파일의 인코딩 형태를 파악해 보자.

# file -bi test.txt
text/plain; charset=utf-8

이 파일은 텍스트 파일인데 utf-8로 저장되어 있다는 소리다. 리눅스 시스템도 UTF8이니깐 이 파일은 잘 보일거다.

리눅스 시스템이 UTF-8인데 파일은 euc-kr 이라면 깨져 보일 것이다.

리눅스 시스템이 EUC-KR인데 파일이 UTF-8이라면 역시 깨져 보일 것이다.

파일 인코딩을 euc-kr 에서 utf-8로 변환하여 저장하는 방법

# iconv -c -f euc-kr -t utf-8 org.txt > new_utf8.txt

리눅스에서 파일안에 텍스트 검색하기

리눅스 쉘에서 일일이 파일을 열어서 특정 문자열이 있는지 검색하기 너무 힘들다.
특히 프로그래머들이 짜증을 겁나 낼 것이다.

그래서 한방에 서브디렉토리까지 파일들을 다 훓어서 특정 문자열이 있는 파일 리스트를 뽑아보자!!!! (쉘에서 실행시킨다)

find .. ! \( -type d \) -name "*<em>.*</em>" | xargs grep --color=auto 찾을문자열 -n

find : 파일 찾기 명령어
.. : 현재 디렉토리보다 한단계 위에서 검색. 혹은 특정 디렉토리를 입력하면된다. 현재 디렉토리는 .
! \( -type d \) : 디렉토리는 제외한다.(파일들을 열어서 그 안에 내용을 검색할꺼니깐 디렉토리는 제외해야 한다.)
-name : 이름으로 검색하는데
“*.*” : 모든 파일을 다 검색한다. 여기서 *.php 로 바꾸면 php 파일만 찾는다.
| : 파이프라고 읽는데 요거 뒤에 같이 조합해서 실행할 커맨드를 넣는다.
xargs : grep를 실행하기 위한 명령어
grep : 파일 안의 내용을 검색하는 명령어
–color=auto : grep으로 찾을 문자열을 하일라이트(눈에 띄게) 넣어주는 옵션
찾을 문자열 : 찾고자 하는 문자열
-n : 해당 문자열이 있는 라인수 출력

요렇게 한방에 쫘악 찾아내보자. 속도도 빠름

find : 파일 찾기 명령어
.. : 현재 디렉토리보다 한단계 위에서 검색. 혹은 특정 디렉토리를 입력하면된다. 현재 디렉토리는 .
! \( -type d \) : 디렉토리는 제외한다.(파일들을 열어서 그 안에 내용을 검색할꺼니깐 디렉토리는 제외해야 한다.)
-name : 이름으로 검색하는데
“*.*” : 모든 파일을 다 검색한다. 여기서 *.php 로 바꾸면 php 파일만 찾는다.
| : 파이프라고 읽는데 요거 뒤에 같이 조합해서 실행할 커맨드를 넣는다.
xargs : grep를 실행하기 위한 명령어
grep : 파일 안의 내용을 검색하는 명령어
–color=auto : grep으로 찾을 문자열을 하일라이트(눈에 띄게) 넣어주는 옵션
찾을 문자열 : 찾고자 하는 문자열
-n : 해당 문자열이 있는 라인수 출력

요렇게 한방에 쫘악 찾아내보자. 속도도 빠름