[완료]grep 정규식에 대한 질문입니다.
글쓴이: namsu / 작성시간: 토, 2010/05/08 - 6:25오후
안녕하세요 KLDP 회원님분들~!
grep 정규식을 이용해서 파일명 앞이 A-Z까지 출력하고자 하는데요
ls | grep ^[A-Z]
이렇게 하면 대문자로 시작하는 파일만 출력되어야 하는게 아닌가요?
# ls | grep ^[A-Z]
A
Aa
AAAA
AAAAE
Ab
B
Bb
Bbbb
Bc
c <<
install.log <<
install.log.syslog << 요놈들이 출력되구요
# ls | grep ^[A-Z]. //첫시작이 A-Z이고 임의의 한문자가 대문자로 시작되는 정규식인가요?
A
Aa
AAAA
AAAAE
Ab
B
Bb
Bbbb
Bc
install.log <<
install.log.syslog << 요놈들만 출력되구요
밑에 두놈은 어떻게 없어지지 않네요..
검색중에 LC_COLLATE < 요 환경변수의 문제일수도 있다는데 언어설정에 따라 출력값이 달라질수 있다는 소리인가요?
Forums:
ls | grep -G
만으로도 충분히 앞의 대문자로 되어 있는 것만 출력하게 됩니다.
insta....로 되어 있는 파일은 출력할 수 없을텐데요...
감사합니다.
LANG=C의 기본로케일에서는 잘되는군요..
정말 고맙습니다 ^^
헬로우~
조금 연구해 보니
조금 연구해 보니 역시 언어 환경변수가 문제가 되네요.
manpage:
For example, in the default C locale, [a-d] is equivalent to [abcd]. Many locales sort characters in dictionary order, and in these locales [a-d] is typically not equivalent to [abcd]; it might be equivalent to [aBbCcDd], for example.
이 설명에 따라 LANG=C로 해 보고 제 기본 언어 설정인 LANG=fr_FR.UTF-8로 해 보니 전자는 [A-Z]를 대문자로, 후자는 대소문자 모두로 인식합니다. 결국 [[:upper:]]로 해 보니 두 로케일 모두에서 잘 되구요.
grep man 페이
grep man 페이지에 정말로 그렇게 설명이 되어 있네요.
저는 LANG=en_EN.UTF-8 인데, 그런 문제가 없었는데, 혹시나 해서 LANG을 ft_FR.UTF-8 으로 해보았는데, 저는 결과가 정확하게 [A-Z]가 동작하네요.
어쨌든 그래도 몰랐던 사실을 하나 알게 되네요. 감사합니다.
환경변수의 문제였네요..
LANG="en-US.UTF-8"인데 잘 되셨어요? fedora12쓰고 있는데 원하는값이 안나오는데.. 시스템마다 다 틀린가보군요..
더 찾아보니까 locale LC_COLLATE 환경변수의 정렬에 관한 문제인듯 싶은데 맞나 모르겠네요..
o LC_COLLATE : 스트링(string)의 정렬 순서(sort order 또는 collation)를 위한
로케일 설정을 위해 사용된다. 이것은 예를 들어 strcoll(), wcscoll(), strxfrm()
등의 함수에 영향을 줄 수 있다.
덕분에 새로운걸 알게되어 기뻐요.. 정말 고맙습니다^^
헬로우~
댓글 달기