글
정규표현식
정규표현식
# 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 |