셸 의 정규 표현 식 및 sed 와 awk 에서 흔히 볼 수 있 는 문제

1 정규 표현 식 의+,?,*각각 무슨 의 미 를 표시 합 니까?
이 세 문 자 는 키워드 의 일치 횟수 를 제한 하 는데 사용 되 며,의 미 는 다음 과 같다.
  • +:최소 한 번 일치 합 니 다.예 를 들 어 a+는 a,aa,aa 등
  • ?:최대 한 번 일치 합 니 다.예 를 들 어 a?0 개 또는 1 개 a
  • 일치 합 니 다.
  • *:여러 번 일치 합 니 다.예 를 들 어 a*는 0 개 또는 여러 개의 연속 a
  • 2 정규 표현 식 이 11 자리 와 일치 하 는 핸드폰 번 호 를 어떻게 작성 합 니까?
    
          :
    [root@svr5 ~]# cat tel.txt 
    01012315
    137012345678
    13401234567
    10086
    18966677788
        11      :
    [root@svr5 ~]# egrep '^1[0-9]{10}$' tel.txt 
    13401234567
    18966677788
    
    3 sed 주소 지정 부호 의 작용 과 표시 방식 을 약술 한다.
    역할:주소 부호(명령 을 실행 하 는 조건)는 sed 가 텍스트 를 처리 해 야 하 는 범 위 를 제어 합 니 다.주소 부 호 를 추가 하지 않 으 면 모든 줄 을 한 줄 씩 처리 합 니 다.
    표시 방식:주소 부 호 는 줄 번호 나 정규 표현 식 을 사용 할 수 있 습 니 다.
    4 어떻게 sed 를 사용 하여 텍스트 의 짝수 줄 을 추출 합 니까?
    테스트 텍스트 보기:
    
    [root@svr5 ~]# cat -n /etc/rc.local 
         1  #!/bin/sh
         2  #
         3  # This script will be executed *after* all the other init scripts.
         4  # You can put your own initialization stuff in here if you don't
         5  # want to do the full Sys V style init stuff.
         6
         7  touch /var/lock/subsys/local
    
    짝수 줄 추출 작업 및 효과:
    
    [root@svr5 ~]# cat -n /etc/rc.local | sed -n '2~2p'
         2  #
         4  # You can put your own initialization stuff in here if you don't
         6
    
    5.sed 를 사용 하여 텍스트 의 줄 당 네 번 째 문 자 를 삭제 합 니까?
    테스트 텍스트 보기:
    
    [root@svr5 ~]# cat /etc/rc.local 
    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    touch /var/lock/subsys/local
    
    줄 당 네 번 째 문자 의 동작 및 효과 삭제:
    
    [root@svr5 ~]# cat /etc/rc.local | sed 's/.//4'
    #!/in/sh
    #
    # Tis script will be executed *after* all the other init scripts.
    # Yu can put your own initialization stuff in here if you don't
    # wnt to do the full Sys V style init stuff.
    touh /var/lock/subsys/local
    
    6./etc/passwd 파일 의 6-10 줄 을 추출 하고 pass5.txt 파일 로 저장 합 니 다.
    텍스트 추출 또는 내 보 내기:
    
    [root@svr5 ~]# sed -n '6,10p' /etc/passwd > pass5.txt
    
    추출 결과 확인:
    
    [root@svr5 ~]# cat pass5.txt 
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
    
    7 awk 도구 의 기본 문법 형식 을 약술 합 니 다.
    형식 1:awk[옵션]'[조건]{처리 동작}'파일 목록
    형식 2:명령|awk[옵션]'[조건]{처리 동작}'
    8 awk 도구 가 자주 사용 하 는 내장 변수,각자 의 역할 을 약술 합 니 다.
  • $n:즉$1,$2,$3...,분 리 된 몇 번 째 필드 를 지정 합 니 다
  • $0:현재 읽 은 전체 텍스트 내용 저장
  • NF:현재 처리 줄 의 필드 개수(열 수)를 기록 합 니 다
  • NR:현재 읽 은 줄 의 수량(줄 수)을 기록 합 니 다
  • 9 awk 에서 텍스트 를 처리 할 때 파일 을 읽 기 전,파일 내용 을 읽 기 전,파일 을 읽 은 후 이 세 부분 은 어떻게 표시 합 니까?
  • BEGIN{}파일 전처리:awk 가 줄 에 들 어가 기 전에 실행 할 동작 을 읽 지 않 았 습 니 다.일반적으로 데 이 터 를 초기 화하 여 단독으로 사용 할 수 있 습 니 다.
  • {}줄 처리:awk 가 읽 은 줄 마다 처리 하여 단독으로 사용 할 수 있 습 니 다.
  • END{}파일 후 처리:awk 는 모든 줄 을 처리 한 후 실행 할 동작,일반 출력 데이터 처리 결과 입 니 다.단독으로 사용 할 수 있 습 니 다.
  • 10 현재 eth 0 네트워크 카드 의 IPv 4 주소 와 마스크 정 보 를 추출 합 니 다.
    테스트 텍스트 보기:
    
    [root@svr5 ~]# ip add list eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:64:88:8e brd ff:ff:ff:ff:ff:ff
        inet 192.168.4.55/24 brd 192.168.4.255 scope global eth0
        inet 192.168.4.5/24 brd 192.168.4.255 scope global secondary eth0
        inet6 fe80::20c:29ff:fe64:888e/64 scope link 
           valid_lft forever preferred_lft forever
    
    IPv 4 주소 및 마스크 정보 추출 작업 및 효과:
    
    [root@svr5 ~]# ip add list eth0 | awk '/\<inet\>/{print $2}'
    192.168.4.55/24
    192.168.4.5/24
    
    11 UID 가 10~20 사이 에 있 는 사용 자 를 찾 아 사용자 이름과 해당 하 는 UID 를 출력 합 니 다.
    
    [root@svr5 ~]# awk -F: '$3>=10 && $3<=20{print $1":"$3}' /etc/passwd
    uucp:10
    operator:11
    games:12
    gopher:13
    ftp:14
    
    12 awk 도 구 를 이용 하여 bash 를 해석 기로 사용 하 는 사용자 수 를 통계 합 니 다.
    NF 내장 변 수 를 사용 하여 마지막 열의 내용 을 찾 습 니 다.bash 와 일치 하면 x+1:
    
    [root@svr5 ~]# awk -F/ '$NF=="bash"{x++}END{print x}' /etc/passwd
    
    13 awk 에서 배열 을 사용 할 수 있 습 니까?각각 무엇으로 구성 되 어 있 습 니까?
    배열 을 사용 하여 각각 배열 이름,아래 표,값 세 부분 으로 구성 할 수 있다.
    14.Liux 에서 텍스트 에 대한 정렬 은 어떻게 실현 합 니까?
    abc.txt 텍스트 와 같은 sort 명령 을 사용 합 니 다.
    또한 옵션-n 을 사용 하여 숫자 오름차 순 으로 배열 할 수 있 습 니 다.-k:지정 한 열 에 대해 정렬-r:역방향 정렬
    
    [root@svr5 ~]# sort Cn abc.txt
    
    Shell 의 정규 표현 식 및 sed 와 awk 의 흔 한 문제 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Shell 정규 표현 식 및 sed 와 awk 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기