Linux 기초 - 정규 표현 식 정리

8018 단어
디 렉 터 리:
   I: 정규 표현 식
   II: 작업
I: 정규 표현 식
정규 는 특수 한 의 미 를 가 진 기호 로 조합 하여 문자 나 문자열 을 묘사 하 는 방법 이다.혹은 한 가지 사물 을 묘사 하 는 규칙 이다.
Liux 에서 어댑터 는 셸 에 의 해 설명 되 고 정규 표현 식 은 명령 에 의 해 설명 되 며 세 가지 텍스트 처리 도구/명령: grep, sed, awk
정규 소개: ^ 무엇으로 시작 합 니까 (같은 줄)         $ 무엇으로 끝 낼 까요?
         . 줄 바 꿈 자 를 제외 한 임의의 단일 문자
         * 붙 어 있 는 왼쪽 의 첫 번 째 문 자 는 0 개 에서 무한 개 로 나 타 났 다.
         + 붙 어 있 는 왼쪽 의 첫 번 째 문 자 는 1 개 에서 무한 개 로 나 타 났 다.
         ? 왼쪽 에 있 는 첫 번 째 문자 가 0 번 에서 1 번 나타 납 니 다.
        .* 모든 문자
        {n} 왼쪽 에 있 는 문자 n 번 나타 나 는
        {2, 4} 왼쪽 에 있 는 그 문 자 는 2 ~ 4 개 (범 위 를 나타 내 는 것) 가 나타 납 니 다. 예 를 들 어 2, 3, 4. 
        {2,} 왼쪽 에 있 는 그 문 자 는 2 에서 무한 개 (범 위 를 표시 하 는) 가 나타 납 니 다. 예 를 들 어 2, 3, 4, 5..............................................   
        [] 문자 그룹 내의 모든 문자
        [^] 문자 그룹 에 있 는 모든 문 자 를 거꾸로 가 져 옵 니 다. (문자 그룹 에 있 는 모든 문자 와 일치 하지 않 습 니 다)
       ^[^] 비 문자 그룹 내 문자 로 시작 하 는 줄
       [a - z] a 부터 z 까지 의 모든 소문 자  예: a b  c.....z
       [A - Z] A 부터 Z 까지 의 모든 대문자. 예: A B  C .....  Z
       [a - Z] a 부터 Z 까지 의 모든 소문 자 와 대문자 a A b  B   ........z  Z
       [0 - 9] 숫자 0 부터 9 까지.   예: 0, 1, 2... 9
       \< 단어 머리 단 어 는 일반적으로 빈 칸 이나 특수 문자 로 구분 되 며, 연속 적 인 문자열 은 단어 로 여 겨 진다.
       \> 단어 끝
 
grep 종류: grep     fgrep      pgrep     egrep  
                      -n  :줄 번호 보이 기
                      -o  :일치 하 는 내용 만 표시
                      -q  :침묵 모드, 출력 이 없습니다. $를 사용 해 야 합 니까?실행 에 성 공 했 는 지, 즉 원 하 는 내용 을 걸 러 냈 는 지 판단 합 니 다.
                      -l  :일치 하 는 데 성공 하면 파일 이름 만 인쇄 하고 실패 하면 인쇄 하지 않 습 니 다. 보통 - rl 과 함께 사용 합 니 다. grep - rl 'root'/etc 
                      -A  :일치 하 는 데 성공 하면 일치 하 는 줄 과 그 뒤의 n 줄 을 함께 인쇄 합 니 다.
                      -B  :일치 하 는 데 성공 하면 일치 하 는 줄 과 이전 n 줄 을 함께 인쇄 합 니 다.
                      -C  :일치 하 는 데 성공 하면 일치 하 는 줄 과 앞 뒤 n 줄 을 함께 인쇄 합 니 다.
                      --color
                      -c  :일치 하 는 데 성공 하면 일치 하 는 줄 수 를 인쇄 합 니 다.
                      -E  :egrep, 확장
                      -i  :대소 문자 무시 
                      -v  :반대로, 일치 하지 않 음
                      -w: 단어 일치
                      -rl: 파일 이름 을 재 귀적 으로 찾 고 표시 합 니 다.
 
sed: 스 트림 편집기 stream editer, 행동 단위 의 처리 프로그램 입 니 다.         뒷 삽
             c 교체
             앞 꽂 이
            삭제
            p 인쇄 와 일치 하 는 줄 은 보통 - n 매개 변수 와 연결 되 어 기본 출력 을 차단 합 니 다.
            r 파일 에서 읽 기
            w 파일 에 쓰기 작업 2: grep 작업 (정규 표현 식 및 문자 처리)
            ! 명령 취 반 
           {} 명령 조합 명령 은 분점 으로 {1h; G} 을 구분 합 니 다. - e 인자 의 다른 쓰기 로 이해 할 수 있 습 니 다.
            = 줄 번호 인쇄 (처리 횟수 줄 번호 대신 줄 번 호 를 입력 하 십시오) 
            다음 줄 에서 모드 공간 으로 읽 기 
            N 은 다음 줄 을 모드 공간 에 추가 하고 현재 줄 과 다음 줄 을 다음 명령 과 동시에 적용 합 니 다.
            s 문자열 바 꾸 기
 
awk
      -F 지정 한 구분자 정의 가능: (콜론)
      -v. 변 수 를 정의 하고 값 을 부여 하 는 것 도 다음 방식 으로 셸 변수 에서 도입 할 수 있 습 니 다.
      NF 는 현재 구분자 (:) 를 구분자 로 하 는 줄 에 몇 개의 내용 이 있 음 을 나타 낸다.
      NR 표시 줄 번호
      FNR 은 줄 이 있 는 파일 의 줄 수 를 표시 합 니 다.
        -v. 변 수 를 정의 하고 값 을 부여 합 니 다.
              == 판단 비; > 보다 크다;
         &&... 뿐만 아니 라
         ||혹시
      |sort  |uniq        반복 제거 (순 서 를 배열 하고 다시 읽 는 것 을 제거)
      du -sh     통계 파일 크기    
       find/- size + 30m 30M 이상 의 파일 찾기       find/- size + 10M - size - 30M 이상 의 파일 찾기
 
II: 작업
작업 1: grep 작업 (정규 표현 식 및 문자 처리)
대상 파일/etc/passwd, grep 명령 이나 egrep 1 을 사용 하여 루트 가 있 는 모든 줄 을 표시 합 니 다:
grep 'root'/etc/passwd 
 
2. bash 를 포함 하 는 모든 줄 을 출력 하고 이 줄 의 상하 각 두 줄 의 내용 을 출력 해 야 합 니 다.
grep `bash` -C 2/etc/passwd 
3. 몇 줄 에 nologin 이 들 어 있 는 지 보 여 줍 니 다.
grep -c 'nologin'/etc/passwd
4. 루트 를 포함 하 는 줄 을 표시 하고 줄 번 호 를 출력 합 니 다.
grep -n 'nologin'/etc/passwd
5. 파일 보이 기
grep -l 'root'/etc/passwd
6. 새 사용자 abominable abominate anomie atomize 정규 표현 식 을 작성 하여 일치 시 킵 니 다.
egrep 'a.omi(nabl|nat|z|)e'/etc/passwd
7. 사용자 4 명 만 들 기 Alex213sb Wpq2222b yH438PIG egon 666 egon
사용자 이름 구성 을 걸 러 내 는 것 은 알파벳 + 숫자 + 자모의 줄 입 니 다.
egrep '^[a-Z]+[0-9]+[a-Z]+'/etc/passwd
8./etc 디 렉 터 리 에 루트 를 포함 하 는 모든 파일 이름 보이 기
grep -w 'root'/etc
9./etc/ssh/sshd config 에 있 는 모든 주석 과 빈 줄 을 걸 러 냅 니 다.
grep -v '^#'/etc/ssh/sshd_config |grep -v '^ *$'
작업 2: Sed 작업:/etc/passwd 파일 을 템 플 릿 으로 합 니 다.
1. 파일 줄 마다 첫 번 째 문 자 를 삭제 합 니 다.
 sed -r 's/^(.)(.*)/\2/' /etc/passwd

2. 줄 마다 두 번 째 문 자 를 삭제 합 니 다.
 sed -r 's/^(.)(.)(.*)/\1\3/' /etc/passwd

3. 줄 마다 마지막 문 자 를 삭제 합 니 다.
 sed -r 's/(.*)(.)$/\1/' /etc/passwd

4. 각 줄 의 마지막 두 번 째 문 자 를 삭제 합 니 다.
 sed -r 's/(.*)(.)(.)$/\1\3/' /etc/passwd

5. 파일 줄 마다 두 번 째 단 어 를 삭제 합 니 다.
 sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\1\2\4/' /etc/passwd

6. 각 줄 의 마지막 두 번 째 단 어 를 삭제 합 니 다.
 sed -r 's/([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)$/\1\3\4/' /etc/passwd

7. 줄 마다 마지막 단 어 를 삭제 합 니 다.
 sed -r 's/([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)$/\1\2\3/' /etc/passwd

8. 각 줄 의 첫 번 째 문자 와 두 번 째 문 자 를 교환 합 니 다.
 sed -r 's/^(.)(.*)(.)$/\3\2\1/' /etc/passwd

9. 각 줄 의 첫 번 째 문자 와 두 번 째 단 어 를 교환 합 니 다.
 sed -r 's/^(.)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\4\2\3\1\5/' /etc/passwd

10. 각 줄 의 첫 번 째 단어 와 마지막 단 어 를 교환 합 니 다.
  sed -r 's/^([a-Z]+)([^a-Z]+)(.*)([^a-Z]+)([a-Z]+)$/\5\2\3\4\1/' /etc/passwd

11. 한 파일 의 모든 숫자 를 삭제 합 니 다.
  sed -r 's/[0-9]//g' /etc/passwd

12. 줄 마다 시작 하 는 모든 빈 칸 을 삭제 합 니 다.
  sed -r 's/^ *//g' /etc/passwd

13. 파일 에 있 는 모든 빈 칸 을 탭 문자 로 교체 합 니 다.
  sed -r 's/ /\t/g' /etc/passwd

14. 모든 대문자 자 모 를 괄호 () 로 묶는다.
  sed -r 's/[A-Z]/(&)/g' /etc/passwd

15. 줄 당 세 번 인쇄 합 니 다.
  sed 'p;p' /etc/passwd

16. 줄 마다 첫 번 째 단어 만 표시 합 니 다.
  sed -r 's/^([a-Z]+)([^a-Z]+)(.*)/\1/' /etc/passwd

17. 각 줄 의 첫 번 째 단어 와 세 번 째 단 어 를 인쇄 합 니 다.
  sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\5\2\3\4\1\6/' /etc/passwd

18. 명령 으로 mm/yy/dd 형식 을 가 져 오고 파 이 프 를 결합 하여 mm; yy; dd 형식 으로 바 꿉 니 다.
      date | sed -r ' s//;/g'
작업 3: awk 텍스트 처리
1) uid 의 0 ~ 40 범위 내 사용자 이름 인쇄
awk -F: '$3>0 && $3<40{print $1,$3}' passwd
2) 5 - 10 줄 의 줄 번호 와 사용자 이름 인쇄
awk -F: 'NR>=5 && NR<=10{print NR $1}' passwd
3) 홀수 줄 인쇄
awk '(NR%2){print $0}' passwd 
4) 짝수 줄 인쇄
awk '!(NR%2){print $0}' passwd 
5) 인쇄 필드 수가 5 이상 인 줄
awk -F: '(NF>3){print $0}' passwd
6) UID 를 출력 하 는 것 은 GID 와 다른 사용자 이름
awk -F: '($3 != $4){print $0}' passwd 
7) 셸 이 지정 되 지 않 은 사용자 인쇄
awk -F: '($NF != "/bin/bash"){print $0}' passwd
 
다음으로 전송:https://www.cnblogs.com/wangyongsong/p/6600006.html

좋은 웹페이지 즐겨찾기