정규표현식

Linux/Linux (CentOS) 2018. 8. 6. 18:35

정규표현식


# grep <arg> ..

-> 파일에서 문자열 검색


# cp /etc/passwd /root/


ex) grep "root" /root/passwd



1. 문자열


# grep <문자열> <path>


* 다중 명령어 | (파이프) *


ex) ls -l / | grep "home"


# rpm -qa   <----------- 설치된 패키지 출력


ex) rpm -qa | grpe nmap


공백이 있을경우 "" <--- 감싸주자



2. 패턴


-E <pattern>

1) 시작 문자


^<문자열>    <^문자열>    <------------ ^ 가 안으로들어가면 NOT연산


# grep -E "^root" /root/passwd  <-------- 해당 문자열 시작점


2) 마지막 문자


<문자열>$


# grep -E "bash$" /root/passwd  <--------- 문자열 마지막


3) 문자 집합    


[문자]


ex) /root/passwd 파일에서 문자 a나 문자 b가 들어간 행을 검색


# grep -E "[ab]" /root/passwd


ex) /root/passwd 파일에서 소문자를 검색


# grep -E "[a-z]" /root/passwd


ex) /root/passwd 파일에서 대문자로 시작하는 행을 검색


# grep -E "^[A-Z]" /root/passwd


ex) /root/passwd 파일에서 소문자숫자로 이루어진 문자열 검색


# grep -E "[a-z][0-9]" /root/passwd


ex) /root/passwd 파일에서 소문자와 숫자로만 이루어진 3글자 문자열 검색


# grep -E "[a-z0-9][a-z0-9][a-z0-9]" /root/passwd


ex) /root/passwd 파일에서 대문자이고 그다음문자가 숫자가 아닌 문자열 검색


# grep -E "[A-Z][^0-9]" /root/passwd



4) 반복 


-  ( ? ) , ( + ) , ( * ) , ( {} )


?    =  0 or 1

+    = 1번 이상

*    = 0번 이상

{num}    = num번



ex) /root/phone.txt 


- 3 자리 숫자로 시작하는 전화번호

# grep -E "^[0-9]{3}" /root/phone.txt


- 3 자리이거나 4자리인 전화번호

# grep -E "^[0-9]{3}[-][0-9]{3,4}" /root/phone.txt

or

# grep -E "^[0-9]{3}[-][0-9]{3}[0-9]?" /root/phone.txt



# grep -E "[0-9]+" /root/phone.txt  

# grep -E "[0][0-9]*" /root/phone.txt  <--- 0 으로 시작하고 뒤에 숫자가 있는





------------------------------------------- [ 실 습 ] ---------------------------------------------------------

estrellita.otg 서버에서 /tmp/sort.txt 파일을 ServerA root 사용자 홈디렉터리로 복사

estrellita.otg 서버에서 /tmp/passwd.txt 파일을 ServerA root 사용자 홈디렉터리로 복사


scp it5@estrellita.org:/tmp/sort.txt /root/sort.txt

scp it5@estrellita.org:/tmp/passwd.txt /root/passwd.txt


--------------------------------------------------------------------------------------------------------------




command


1. sort


ex) sort <option> <path>



# sort sort.txt  


# sort -n sort.txt   <-------------- 숫자를 기반으로 정렬


# sort -f sort.txt <----------------- 문자를 기반으로 정렬


# sort -r sort.txt <---------------- 역순


# sort -o sort.txt <--------------  파일을 지정하여 출력

- sort -nr sort.txt -o rsort.txt


# sort -u sort.txt <-------------- 중복행 제거후 출력



ex) 6글자 이상의 단어를 검색


# grep -E "[a-zA-z]{6}[a-zA-z]*" /root/rsort.txt



2. uniq ( sort )


# uniq <option> <path>    <------------- 문자가 떨어져있으면 안된다

-c    : 몇번

-d    : 중복되어 나오는 행 중 한 행만 표시

-u    : 중복되지 않은 행만 표시


# sort -n sort.txt | uniq -c <-------- sort로 정렬후 몇번 중복되어있는지 확인



----------------------------------------------- [ 실 습 ] -----------------------------------------------------


최근에 해당 서버가 침해를 당한 흔적을 발견 ( 소유자 root , SETUID)


공격자가 setuid 설정을 변경하거나 ( chmod )


소유자를 root로 바꾼 흔적들을 찾아라 ( chown )


-> root 사용자가 chmod , chown 이라고 명령한 흔적을 검색


# grep "chmod" /root/.bash_history

# grep "chown" /root/.bash_history

or

# grep -E "(chmod|chown)" /root/.bash_history

--------------------------------------------------------------------------------------------------------------




3. tr ( 출력 command 함께 사용 )


# tr <문자열> <문자열>


ex)  y를 Y로 변경


# cat password.txt | tr 'y' 'Y' 


ex) 소문자르 대문자로 변경


# cat password.txt | tr '[a-z]' '[A-Z]'


ex) 13 번 자리이동

a -> n , ...

# cat password.txt | tr '[a-z]' '[n-za-m]' 




4. web 


# yum -y install lynx.x86_64


# lynx -source http://www.nlotto.co.kr/gameInfo.do?method=powerWinNoList


ex) numSort ('복권번호');


# lynx -source  http://www.nlotto.co.kr/gameInfo.do?method=powerWinNoList | grep numSort




































 















'Linux > Linux (CentOS)' 카테고리의 다른 글

Kernel  (0) 2018.08.08
Router  (0) 2018.08.06
find  (0) 2018.08.03
Mail Server  (0) 2018.08.02
DNS ( Domain Name Service )  (0) 2018.07.30

설정

트랙백

댓글