시스템/Shell Script2014. 10. 23. 14:23

정규표현식 이란?

 

 

정규표현식이란 간단하게 이야기해서 검색에서 사용할 매칭되는 같은 문자들의 패턴을 뜻합니다.

 

또한 정규표현식은 모든 언어(jsp,php,asp,javascript,perl 등등)에서 사용이 되며, 사용법에는 큰 차이는 없습니다.

 

 

우선 Shell Script 에서 사용되는 정규표현식에 대하여 알아보겠습니다.

정규표현식에서는 문자 그대로의 의미 이상으로 해석되는 메타문자 라고 부르는 문자들의 집합을 사용합니다.

 

 

연산자

내용

.

newline을 제외한 오직 하나의 문자와 일치합니다.
(예 : "1..e" 정규표현식은 1을 포함하고 두개의 문자 다음에 e가 나오는 라인을 의미합니다.

?

자신 앞에 나오는 정규표현식이 0개 이거나 1개인 것과 일치하고 대부분 하나의 문자와
매칭할 때 사용합니다.

*

바로 앞의 문자열이나 정규표현식에서 0개 이상 반복되는 문자를 의미합니다.

+

자신 앞에 나오는 하나 이상의 정규표현식과 일치합니다. * 와 비슷하게 동작하지만
반드시 하나 이상과 일치합니다.

{N}

정확히 N번 일치 합니다.

{N,}

N번 또는 그 이상 일치합니다.

{N,M}

적어도 N번 일치하지만 M번 일치를 넘지 않습니다.

-

목록에서 처음과 마지막을 제외한 범위를 의미하거나 목로의 마지막 지점을 의미합닏.

^

라인의 시작에서의 공백 문자열을 의미합니다. 또한 목록의 범위에 없는 문자들을 의미합니다.
(예: ^linux 는 linux 문자열로 시작하는 모든 라인을 의미합니다.)

$

라인 마지막에서의 공백 문자열을 의미합니다.
(예 : linux$ 는 linux 로 끝나는 모든 라인을 의미합니다.)

^$

빈 줄과 일치합니다.

[…]

대괄호는 단일 정규표현식에서 문자들을 집합으로 묶어줍니다.
예:
[xyz] : x, y, z 중 한 문자와 일치합니다.
[c-n] : c에서 n  사이에 속하는 한 문자와 일치합니다.
[B-Pk-y] : B에서 P까지 또는 k에서 y까지의 한 글자와 일치합니다.
[a-z0-9] : 소문자나 숫자 중 한 문자와 일치합니다.
[^b-d] : b 에서 d 사이의 문자를 제외한 모든 문자를 나타냅니다.
           또한 ^ 는 바로 뒤에 나오는 정규표현식의 의미를 반대로 해석하도록 합니다.

\

특수문자를 원래의 문자 의미대로 해석합니다.
예 : \$ : $ 문자 그대로 해석합니다.

\b

단어 끝의 공백 문자열을 의미합니다.

\B

단어 끝이 아닌 곳에서의 공백 문자열을 의미합니다.

\<

단어 시작에서의 공백 문자열을 의미합니다.
예 : \<linux    : linux 문자열로 시작되는 단어를 포함하고 있는 라인

\>

단어 끝에서의 공백 문자열을 의미합니다.
예 : linux \>   : linux 문자열로 끝나는 단어를 포함하고 있는 라인

 

 

 

 

아래의 내용은 정규표현식에서 사용하는 확장된 메타문자(브래킷) 입니다.

 

브래킷

내용

[:alnum:]

[A-Za-z0-9] 처럼 알파멧 문자와 숫자로 이루어진 문자열 입니다.

[:alpha:]

[A-Za-z] 과 동일한 알파벳 문자를 의미합니다.

[:blank:]

[ \x09] 스페이스와 탭을 의미합니다.

[:cntrl:]

컨트롤 제어 문자를 의미합니다.

[:digit:]

[0-9] 숫자를 의미합니다.

[:graph:]

[!-~] 공백이 아닌 문자를 의미합니다.(스페이스, 제어문자들은 제외)

[:lower:]

[a-z] 소문자

[:print:]

[ -~] [:graph:]와 비슷하지만 스페이스 문자를 포함합니다.

[:punct:]

[!-\:-@[-'{-~] 문장 부호 문자

[:space:]

[ \t\v\f] 모든 공백 문자(newline 줄바꿈, 스페이스, 탭)

[:upper:]

[A-Z] 대문자

[:xdigit:]

[0-9a-fA-F] 16진수에서 사용할 수 있는 숫자

 

 

예제)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'시스템 > Shell Script' 카테고리의 다른 글

date 명령어로 날짜,시간 계산하기  (0) 2013.05.23
Posted by 소울하트
시스템2014. 4. 24. 12:54

iconv 사용법!
웹페이지를 이전할 때나 mysql 데이터 이전시 character set 문제로 고생을 할 때가 있습니다.

예를 들자면 이전할 서버는 euckr 인데.. 웹소스 데이터가 utf8 로 되어있다던가,
database 가 rpm 이나 yum 으로 설치하면 기본 언어셋팅이 latin1 로 되기에 이전시 문제가
이전 대상 서버의 언어설정과 맞지 않아 어려움이 생길수 있습니다. 

이에

iconv 로 데이터파일의 언어설정을 바꿀수 있습니다.

iconv -c -f euckr -t utf8  test_euckr.sql > test_utf8.sql

위와 같은 형식으로 변경이 가능합니다. -f 는 기존의 언어셋을 -t 는 변경할 언어셋을 설정해 주면 됩니다.

위에선 예제로 euckr 과 utf8 을 적어놨습니다. 하지만 iconv 의 지원언어는 엄청납니다.!

iconv -l  을 하게되면 지원가능한 언어가 좌르륵 나옵니다. 다만 변환을 위해서 기존언어가 어떤언어인지
확인이 필요하겠죠..(확인하기가 제일 어려움..ㅜㅜ)

아래는 iconv 의 자세한 내용 입니다.

# iconv --help
사용법: iconv[<옵션>...] [<파일>...]
주어진 파일의 인코딩을 한 인코딩에서 또 다른 인코딩으로 변환함.

입/출력 형식 지정:
  -f, --from-code=<이름>     원 문서 인코딩
  -t, --to-code=<이름>       출력 인코딩

정보:
  -l, --list                 알려진 모든 문자셋 코드를 열거함

출력 조정:
  -c                         출력에서 잘못된 문자를 제외합니다
  -o, --output=FILE          출력 파일
  -s, --silent               경고를 표시하지 않습니다
      --verbose              진행 정보를 표시
  -?, --help                 이 도움말 리스트를 표시함
      --usage                간략한 사용법 메세지를 표시함
  -V, --version              프로그램 버전 표시

iconv 로 다수의 파일을 인코딩 변경 하는 스크립트는 http://mindpower.kr/22 <- 여기에서^^

질문사항이 있으면 댓글 남겨주세요 ㅎㅎ 
Posted by 소울하트
기타2014. 1. 13. 17:23

안녕하세요

 

동영상 속도조절 프로그램인 Myspeed Player 입니다.

 

동영상 또는 음악파일을 천천히 듣거나 보거나,

또는 빠르게 듣거나 보거나 할 수 있는 프로그램 인데요..

(제작 사이트가 폐업했다니.. 사용해도 될겁니다.)

 

파일을 다운 받으시고 실행! 처음, 두번째는 아무거나 입력하시고 3번째에 아래에 있는 Serial 을 입력하면됩니다.

 

MySpeed_MultiPlayer_1[3].0.exe <--- 클릭

 

COSPD-SJ391-MTEDE-000DB-MUL56

 

그럼 즐겁게 Myspeed Player 로 동영상을 빠르게..

'기타' 카테고리의 다른 글

Windows SSL 리눅스로 변환  (0) 2014.11.04
상위기관 네임서버 호스틍 등록확인  (0) 2013.01.17
SSL 변환 (pem > pfx , p7b > pem)  (0) 2012.02.14
대용량 텍스트 파일 열기  (0) 2012.01.13
드디어 티스토리 를...!!  (0) 2011.10.31
Posted by 소울하트
시스템/Linux2013. 12. 20. 08:35

안녕하세요.

 

리눅스 설치 후 콘솔작업 할때에는 문제가 없으나, SSH접속프로그램인 Putty 나 SecurCRT 등을 사용할때에

화면 및 한글깨짐으로 작업에 어려움이 발생할 수 있습니다.

(한글설정 이 되지않아 불편할 때가 많죠.)

 

또한 일본식 한자나 한문 같은 경우에도 정확하게 표현해 주지 못할 경우에 UTF-8 유니코드 가 사용됩니다.

 

UTF-8 은 가변길이 인자 인코딩 방식으로 1비트부터 4비트까지 가변적으로 바뀌기에 모든 외국어 및 한글을

표현하기에 시스템의 언어설정은 UTF-8로 하시길 권장드립니다.

(EUC-KR 의 경우 8비트 인코딩 방식으로 한글만 표현하기에는 적합합니다.)

 

그럼 우선 시스템에 UTF-8 설정하는 방법입니다.

 

아래의 방법처럼 /etc/sysconfig/i18n 이 파일에 UTF-8 관련 내용을 추가합니다.

/etc/sysconfig/i18n 파일이 리눅스의 언어설정 파일입니다.(한글설정 포함)

 

vi 편집기로 /etc/sysconfig/i18n 파일을 수정해줍니다.

개발된 웹소스의 언어 설정에 따라 맞는 설정을 사용하시면 될듯합니다. vi 로 리눅스 Shell 상에서 보기 위해서 입니다.

보통 UTF-8 로 저장된 문서를 시스템의 LANG 설정이 맞지 않으면 꺠져서 보이기에 Shell 에서 작업할때에

알아보기가 힘듭니다..

 

#UTF-8 설정 시

 

vi ⁄etc⁄sysconfig⁄i18n
LANG="ko_KR.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"
SYSFONTACM="8859-15"
vi ⁄etc⁄profile
export LC_ALL="ko_KR.UTF-8"
export LANG="ko_KR.UTF-8"

 

 


#EUC-KR 설정 시

LANG="ko_KR.EUC-KR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"

 

위처럼 작업 후 쉘에서 source 명령으로 /etc/sysconfig/i18n 파일과 /etc/profile 파일을 적용해 주면 됩니다.

source ⁄etc⁄sysconfig⁄i18n
source ⁄etc⁄profile 


마지막으로 어떤파일은 euckr 로 저장이 되고, 어떤파일은 utf8 로 저장이 되었을때 iconv 로 변환해서 보면 되지만

일일이 작업하려면 매우 번거롭습니다..

 

그럴 경우 SSH 로 접속한 계정의 홈디렉토리 아래에 .vimrc 파일을 생성 후 vi 옵션을 설정해 주면

utf8 과 euckr 을 동시에 사용할 수 있습니다.

 

cd ~ 
vi .vimrc


#아래내용 추가

set ts=4
set fileencodings=utf-8,euc-kr

추가 후 재 로그인 하면 로그인 시 .vimrc 파일을 불러오면서 적용이 됩니다.

 

 

▽도움이 되셨다면 아래의 손가락광고배너 한번 클릭해주는 센스 감사^^

Posted by 소울하트
Web/기타2013. 12. 6. 11:41

안녕하세요.

 

오늘은 Tomcat 메모리 설정에 관해서 포스팅을 하고자 합니다.

기본적으로 Tomcat 또는 Java 실행시 메모리가 상당히 중요한데요.

 

어떠한 목적을 위해 사용하느냐에 따라서 Tomcat (Java) 의 메모리 설정이 중요합니다.

 

저 역시.. 프로젝트를 위해 테스트 하던도중 Tomcat 메모리 설정을 이리저리 변경해보고

추후에 참고하고자 이 글을 작성하게 되었네요. 참 .. CentOS 기준입니다.

 

우선 Tomcat 의 경우 실행할때에 옵션을 줄수있습니다.

다만 이 옵션이 Tomcat 을 실행할때 다른 프로세스와 다르게 CATALINA_OPTS 라는 변수로 추가를 해줘야 합니다.

방법은 정해져 있지 않습니다. Tomcat 설치 디렉토리의 bin 폴더 밑에 catalina.sh 에

추가해주거나 접속한 계정의 홈 디렉토리에 있는 .bash_profile 이나 /etc/profile 에 추가해줘도 전혀 문제 없습니다.

(Tomcat 실행시 CATALINA_OPTS 라는 변수를 참고해서 실행하기에 그렇습니다.)

 

우선 Tomcat 의 CATALINA 옵션에 대해 알아보겠습니다.

 

- server : Server HotSpot JVM을 사용하는 옵션입니다. Server HotSpot JVM은 Desktop용 Appkication을 구동하는데 유리하고,

                최적화(Optimization)에 필요한 모든 과정을 최대한으로 수행합니다. Application의 시작시간은 느리지만, 일정 시간이 흐르면 Client HotSpot JVM에

              비해 훨씬 뛰어난 성능을 보장합니다.
    Jdk 1.5부터는 Server-Class머신인 경우에는 -server 옵션이 기본값이며, Server-Class머신이란 2장 이상의 CPU와 2G이상의 메모리를 갖춘 머신을 의미합니다.

- Xms<size>

 : Java Heap의 최소 크기값을 지정하는 부분입니다. Java Heap Size는 -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx옵션으로 지정한 크기만큼 증가합니다.
- Xmx<size>

 : Java Heap의 최대 크기값을 지정하는 부분입니다. -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx옵션으로 지정한 크기만큼 증가합니다.
   Sun HotSpt JVM 계열에서는 최초 크기와 최대 크기를 동일하게 부여할 것을 권장하고 있으며, 크기의 동적인 변경에 의한 오버 헤들를 최소화하기 위해서입니다.

- XX:NewSize=<Value>

 : New Generation의 시작 크기를 지정값 입니다.
- XX:MaxNewSize=<value>

 : New Generation의 최대 크기를 지정값 입니다.
   New Generation의 크기는 NewSize옵션값과 MaxNewSize옵션값에 의해 결정됩니다
 
- XX:PermSize=<size>

 : Permanent Generation의 최초 크기를 지정하는 값입니다.
- XX:MaxPermSize=<size>

 : Permanent Generation의 최대 크기를 지정하는 값입니다.
  많은 수의 Class를 사용하는 Application들은 Permanent Generation의 크기가 작을 경우 Out of Memory Error가 발생하며 Class를 로딩하지 못하거나

      사용중 다운되는 경우 때문에 초기 Permanent Generation의 값을 메모리에 여유가 있다면 넉넉하게 주는 것이 좋습니다.
 
- XX:NewRatio=<value>

 : New Generation과 Old Generation의 비율을 결정합니다.
  자세하게 안내되어 있는 블로그 링크를 남김니다.  http:⁄⁄helloworld.naver.com⁄helloworld⁄184615
 
- XX:SurvivorRatio=<value>

 : Survivor Space와 Eden Space의 비율을 지정하는 값입니다. 만일 이 값이 6이면, To Survivor Ratio:From Survivor Ratio:Eden Space = 1:1:6 이 됩니다.
   즉, 하나의 Survivor Space의 크기가 New Generation의 1⁄8 이 된다. Survivor Space의 크기가 크면 Tenured Generation으로 옮겨가기 전의 중간 버퍼 영역이

   커지는 게 됩니다. 따라서 Full GC의 빈도를 줄이는 역할을 할 수 있는 반면 Eden Space의 크기가 줄어들므로 Mirror GC가 자주 발생하게 될 가능성이

   있습니다.

- XX:ReservedCodeCacheSize=<value>

 : Code Cache의 최대 사이즈의 크기(byte) 설정값 입니다.

- XX:+DisableExplicitGC

 : System.gc 호출에 의한 Explicit GC를 비활성화하며, RMI에 의한 Explicit GC나 Applicaton에서의 Explicit GC를 원천적으로 방지하고자 할 경우에 사용됩니다.

- XX:+UseConcMarkSweepGC

 : CMS Collector를 사용할 지의 여부를 지정하는 옵션이며, GC Pause에 의한 사용자 응답 시간 저하 현상을 줄이고자 할 경우에 사용이 권장됩니다.

- XX:+AggressiveOpts

 : 최신 HotSpot VM 성능을 최적화하는 옵션입니다.

- Djava.net.preferIPv4Stack

 : IPv4인식하기 위해 사용합니다.

- Djava.awt.headless

 : 비윈도우 환경에서 GUI 클래스를 사용할 수 있게 하는 옵션입니다.

 

 

 

해서.. 저의 경우 /etc/profile 에 JAVA_HOME 과 같이 CATALINA_OPTS 변수를 추가해서 아래의 처럼 사용 중입니다.

 

 

CATALINA_OPTS="-server -Xms2048M -Xmx2048M -XX:PermSize=128M -XX:MaxPermSize=128M -Xnoclassgc -XX:NewSize=512M -XX:MaxNewSize=1024M -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+AggressiveOpts -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true"

 

이상입니다.

 

Posted by 소울하트