database.sarang.net의 "Oracle Q&A" 게시판에서 발견한 글에 아주 살짝 양념을 더했습니다.

원문 : database.sarang.net의 원문

 
"어떤 문자열에서 특정 문자를 구분 문자로 하여 나눴을때 마지막 문자열을 보여주고싶다."라고 할때... 음... 이걸 해결해 놓은게 아래의 쿼리입니다.
Oracle 10g R2와 Oracle Express Edition 11g에서 정상적으로 실행되는것을 확인하였습니다.

SELECT tablespace_name "테이블스페이스"
             , file_name "파일 이름"
            
 , SUBSTR(file_name, INSTR(file_name, '\', -1) + 1) as "1st"
             , REGEXP_SUBSTR(file_name, '[^\]+$')  as "2nd"
FROM dba_data_files;

물론 UNIX 장비라면 아래와 같이 역슬래쉬가 아니라 슬래쉬로 구분을 해야겠죠. ^^

SELECT tablespace_name "테이블스페이스"
             , file_name "파일 이름"
            
 , SUBSTR(file_name, INSTR(file_name, '/', -1) + 1) as "1st"
             , REGEXP_SUBSTR(file_name, '[^/]+$')  as "2nd"
FROM dba_data_files;

 테이블스페이스  파일 이름                   1st         2nd

-------------- ---------------------------------------- ------------- -------------
USERS  /u01/app/oracle/oradata/XE/users.dbf  users.dbf  users.dbf
SYSAUX  /u01/app/oracle/oradata/XE/sysaux.dbf  sysaux.dbf  sysaux.dbf
UNDOTBS1  /u01/app/oracle/oradata/XE/undotbs1.dbf  undotbs1.dbf  undotbs1.dbf
SYSTEM  /u01/app/oracle/oradata/XE/system.dbf  system.dbf  system.dbf



KLDP에서 퍼온 VI Editor에서 텍스트 찾지, 바꾸기 명령어 예제입니다.

원문 : vi 텍스트 찾기 바꾸기 관련 명령어 모음

1. 문서 처음부터 마지막까지의 char 를 _char_ 로 치환한다.
:%s/char/_&_/g

2. 현재(커서위치)부터 마지막까지의 char 를 _char_ 로 치환한다.
:.,$s/char/_&_/g

3. buf_.*[255], buf_in[255], buf_get[255] 와 같은 문자열을 hello 로 변경한다.
:1,10s/buf_.*\[255\]/hello/g

4. 숫자로만 이루어진 행 찾기는 다음과 같습니다.

/^\d\+$

^ : 행의 첫부분
\d : 0~9까지의 숫자
+ : 바로 앞의 글자 (여기서는 숫자)가 1개나 1개 이상 있음. (즉 숫자가 최소한 1개 있음)
$ : 행의 마지막 부분

5. 전체 문서에서 add 를 plus로 치환

:s/add/plus/g

6. 현재 편집중인 전체 문서에서 /etc/ 를 /etc/local/ 로 치환

:s/\/etc\//\/etc\/local\//g

7. '앗싸좋구나108계단' 이 '좋구나108계단앗싸' 로 바뀝니다.

:%s/\(앗싸\)\(좋구나\)\(108계단\)/\2\3\1/g

8. 대소문자 구분없이 바꾸려면 i 옵션을 붙입니다. 이것은 ".vimrc" 파일을 고치지 않아도 작동합니다.

:%s/foo/bar/i

9. 정확하게 foo에 일치될 때만 바꿉니다. 즉 foo는 바꾸지만, foo 앞뒤로 다른 문자열이 붙어 있는 경우에는 바꾸지 않습니다.

:%s/\/bar

10. 정렬

123 def ghi
432 ius dkf
089 cdo lks

이걸 숫자를 가운데로, 두번째는 끝, 세번째 처음으로 보내려면

:%s/\([0-9]*\) \([a-z]*\) \([a-z]*\)/\3 \2 \1/g

11. 만약 3~5자리로 이루어진 모든 숫자를 검색하고 싶다면 다음과 같이 입력한다.

/[0123456789]\{3,5\} 또는
/[0-9]\{3,5\}

12. 만약 `ab'로 시작하는 소문자로 되어 있는 모든 단어를 삭제하려면 다음과 같이 입력한다.

:%s/ab[a-z]*//g

13. 만약 test라는 파일에 cpu가 들어있는 라인을 모조리 지우고자 한다면 vi mode에서 아래와 같이 사용한다.

:g/cpu/d

# g는 모든 라인에 적용한다라는 의미이고,
# d는 delete를 의미합니다.

14. stat0,stat1.....stat9 패턴이 있는 라인을 모조리 지우기

:g/stat[0-9]/d

15. 빈 줄 두 줄을 한 줄로 바꾸기

:%s/\n\n/\n/g

16. 두 칸을 한 칸으로 줄이기

:%s/ / /g

17. 탭을 스페이스 공백으로 바꾸기

:%s/\t/ /g

18. 마지막에 한 칸 띠우고 엔터된 것을 바로 엔터한 것으로 고치기

:%s/ $//g 또는
:%s/ \n/\n/g

19. 줄 첫 칸의 띠어쓰기를 없애기

:%s/^ //g

20. 잘못 바꾸기를 했을 때 되돌리려면 그냥 u 키를 누르면 됩니다.



+ Recent posts