svn 파일을 mac에서 vi로 확인을 해보니 파일이 죄다 깨져있고 심지어 파일 자체를 binary로 인식하고 있었다.


file -I 파일 이름으로 확인해보니


text/x-c++; charset=utf-16le << 로 출력이 되어


이것을 찾아보다가 Encode명령어로 변경하여 해결했다.


iconv 명령어가 바로 그것인데


iconv -f utf-16le -t us-ascii 파일이름 > 새로운파일이름


얼라?


cannot convert  error를 토해내고 있다....


이런 경우에 먼저 utf-16으로 변경해준다음에 다시 us-ascii 로 변경하니 해결 됐다.


iconv -f utf-16le -t utf-16 test.cs > test1.cs

iconv -f utf-16 -t us-ascii test1.cs > test2.cs

cp -fv test2.cs test.cs


로 다시 엎어주면 해결됨.



'프로그래밍 > UNIX & LINUX' 카테고리의 다른 글

[명령어] grep  (0) 2016.11.24

grep 명령어는 파일의 텍스트 패턴을 찾을 때 사용하는 강력한 프로그램입니다. ( 너무 강력해서 좀 무섭다.... )


grep은 파일 내에서 "패턴"을 만났을 때, 그 패턴을 가지고 있는 라인을 출력 합니다. grep은 다른 명령어랑 혼합해서 쓰는 것이 가능하며, 정규 표현식 이라고 하는 고급수준의 패턴을 사용하여 더 정밀한 검색 또한 가능합니다.


기본적으로  grep 명령어 혼자일 때 보다는 혼합해서 사용했을 때 더욱 효과를 발휘 합니다.


사용법은 다음과 같습니다.


grep [옵션] [패턴] [파일 또는 디렉토리]


옵션 종류

-A num : 일치하는 줄 다음에 지정한 줄 수(num)만큼의 내용을 더 보여준다.

-b : 일치하는 줄을 출력하는 내용의 맨 앞에 바이트 오프셋(byte offset)을 보여준다. ( 패턴 매칭되기전 라인의 바이트수를 출력 )

-B num : 일치하는 줄의 위에 지정한 줄 수만큼의 내용을 더 보여준다.

-c : 일치하는 줄의 수를 보여준다.

-C : 일치하는 줄의 위와 아래에 지정한 줄 수만큼의 내용을 더 보여준다.

-d [action] : 읽고자 하는 파일이 디렉터리 일 경우 지정한 값을 실행한다. 기본값으로는 read이다. 아래는 실행 가능한 값이다.

read : 디렉토리를 보통 파일처럼 읽는다.

skip : 디렉토리를 건너뛴다.

recurse : 디렉토리를 포함하여 하위 디렉터리의 모든 파일을 읽는다.


-e [패턴] : 하나 이상의 탐색 패턴을 지정한다. 단순한 패턴으로 동작하지만 패턴이 -로 시작할 때 유용하다.

-E : 확장 정규표현식으로 패턴을 해석한다.( = egrep 같은 의미)

-f [파일] : 패턴을 지정한 파일에서 가져온다.

-h : 패턴의 결과 목록만 보여주고 지정한 파일명은 출력하지 않는다.

-i : 대소문자의 구별을 하지 않는다.

-l : 일치하는 줄의 파일명만 보여주고, 줄의 내용은 출력하지 않는다.

-n : 일치하는 줄의 내용과 해당 줄의 위치를 출력한다.

-q : 결과를 출력하지 않는다.

-r : 각 디렉토리의 하위에 존재하는 파일들을 읽는다. -d recurse 옵션과 동일한다.

-s : 존재하지 않거나 읽을 수 없는 파일의 결과로 에러를 출력하지 않는다.

-v : 지정한 패턴과 일치하지 않는 내용을 보여준다.

-w : 지정한 패턴과 워드 단위로 일치하는 결과만을 보여준다.

-x : 패턴과 일치하는 전체 줄 수를 보여준다.

-y : -i 옵션과 동일한다.


< grep에서 사용하는 정규 표현식 메타 문자 >

메타문자
기    능
사용 예
사용 예 설명
^
행의 시작 지시자
'^love'
love로 시작하는 모든 행과 대응
$
행의 끝 지시자
'love$'
love로 끝나는 모든 행과 대응
.
하나의 문자와 대응
'l..e'
l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
*
선행문자와 같은 문자의 0개 혹은 임의개수와 대응
*love'
0개 혹은 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응(*앞에 공백이 있는 상태, 다른 문자가 있다면 그 문자가 0개 혹은 임의 개수의 문자 후에 love로 끝나느 경우를 말함)
[]
[] 사이의 문자 집합중 하나와 대응
'[Ll]ove'
love나 Love를 포함하는 행과 대응
[^ ]
문자집합에 속하지 않는 한 문자와 대응
'[^A-K]love'
A와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열과 대응
\<
단어의 시작 지시자
'\<love'
love로 시작하는 단어를 포함하는 행과 대응(vi,grep에서 지원)
\>
단어의 끝 지시자
'love\>'
love로 끝나는 단어를 포함하는 행과 대응
(vi,grep에서 지원)
\(..\)
다음 사용을 위해 태그를 붙인다.
'\(lov\)ing'
지정된 부분을 태크1에 저장한다. 나중에 태그값을 참고하려면 \1을 쓴다. 맨 왼쪽부터 시작해 태그를 9개가지 쓸 수 있다. 왼쪽 예에서는 lov가 레지스터1에 저장되고 나중에 \1로 참고할 수 있다.
x\{m\}
문자 x를 m번 반복한다.
'o\{5\}'
문자 o가 5회 연속적으로 나오는 모든 행과 대응
x\{m,\}
적어도 m번 반복한다.
'o\{5,\}'
문자 o가 최소한 5회 반복되는 모든 행과 대응
x\{m,n\}
m회 이상 n회 이하 반복한다.
o\{5,10\}'
문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응
(표참조 : http://www.leopit.com/Leophp/board/lecture_board/view.php?id=61&board_mode=linux)


옵션의 예를 하나씩 보도록 하겠습니다.







'프로그래밍 > UNIX & LINUX' 카테고리의 다른 글

iconv 사용 후기  (0) 2017.02.27

+ Recent posts