>  기사  >  운영 및 유지보수  >  정규식

정규식

巴扎黑
巴扎黑원래의
2017-07-21 10:03:232032검색

[ 0-9]: 숫자

[a-zA-Z0-9]: 문자 또는 숫자
  • 와 일치합니다. : 공백을 제외한 임의의 문자 1개와 일치합니다.
  • [0 -f ]: 16진수
  • abc | def: abc 또는 def
  • a (bc | de) f: abcf 또는 adef
  • <: 단어의 첫 번째 단어 앞에는 일반적으로 공백 또는 특수 문자 구분을 위해 연속된 문자열은 단어로 처리됩니다.
  • >: 단어 끝
  • [^expression]: 소문자를 제외한 모든 문자 등.
  • 2 다음 기호는 일치 항목 수를 제어합니다.
  • 해당 기호의 왼쪽에는 위의 첫 번째 지점에 표현식이 있어야 합니다.

  • 표현식*: 0 또는 n자

  • 표현식+ : 1 또는 n자

  • 표현식? : 0 또는 1자

표현식 {n} : n자

표현식 {n:m} : n ~ m자
  • 표현식 {n, }: n자 이상
  • 【예】[a-z]*는 0개 이상의 소문자 일치를 의미합니다
  • 3. 시작과 끝의 문자 일치를 제어합니다
  • ^표현: 머리가 일치합니다
  • Expression$: 꼬리가 일치함
2. Linux의 세 가지 주요 텍스트 처리 도구

1. egrep 필터링 도구

grep의 확장 버전, 정규 표현식을 사용할 수 있음 표현식

    구문:
  • egrep - '정규식' 옵션 파일 이름
  • 옵션:

-n: 줄 번호 표시

-o: 일치하는 콘텐츠만 표시

-q: 자동 모드, 아니요 출력의 경우 실행 성공 여부, 즉 원하는 내용이 필터링되는지 여부를 판단하려면 $?를 사용해야 합니다.

-l: 일치하면 파일 이름만 인쇄됩니다. 실패하면 일반적으로 -rl을 함께 사용합니다. grep -rl 'root' /etc

-A: 일치에 성공하면 일치하는 줄과 다음 n줄이 함께 인쇄됩니다
  • -B: 일치에 성공하면 일치하는 라인과 전후 n라인이 함께 인쇄됩니다.
  • -C: 일치에 성공하면 일치하는 라인과 전후의 n라인이 함께 인쇄됩니다. 함께 인쇄됩니다
  • --color
  • - c: 일치에 성공하면 일치하는 줄 수를 인쇄합니다.
  • -i: 대소문자 무시
  • -v: 부정, 일치하지 말고 : -w : 일치하는 단어
  • 2. SED 스트림 편집기
  • 문법 :

  • 구문 1 : sed- 옵션 '숫자 위치 + 명령'파일 이름

  • 옵션 :
  • -n: 자동 모드, 출력 없음

  • -e: 다중 편집, 명확하지 않음

-i: 출력 대신 파일 내용을 직접 수정

-r: 확장 모드 , 정규 표현식을 사용할 수 있습니다

-f: 파일 이름 지정, 새 파일에 작업 작성

    위치 지정:
  • ①번호 위치 지정(입력 줄 번호 위치 지정)
  • 1 : 한 줄

  • 1,3: 첫 번째 행부터 세 번째 행까지의 범위

  • 2,+4: 행 뒤의 여러 행과 일치

4,~3: 네 번째 행부터 세 번째 행까지 다음 3의 배수

2~3: 두 번째 행 세 줄 간격으로 한 줄

$: 마지막 줄
  • 1!: 첫 번째 줄 이외의 줄
  • [예] sed -n '1p' /etc/passwd
  • ②정규식 위치 지정
  • 정규식은 //

  • 으로 래핑해야 합니다. 확장 정규식은 -r 매개변수 또는 escape

  • 로 바꿔야 합니다.
  • 정규식을 사용할 수 있는 하위 패턴, 즉 괄호 () 교체, 1과 2는 하위 패턴을 나타낼 수 있습니다

[예] sed -r 's/(.)(.)/21/ file1은 일치의 첫 번째와 두 번째 부분을 바꾸는 것을 의미합니다

*greedy 옵션: g를 입력합니다. 이는 한 줄에서 일치하는 모든 항목을 바꾸는 것을 의미합니다.

    명령:
  • a ∶append,

  • c ∶change,

d ∶ delete delete,

i ∶ Insert, i 뒤에 문자열이 올 수 있으며 이 문자열은 새 줄(현재는 이전 줄)에 나타납니다.

p ∶인쇄인쇄

s∶대체교체, 직접교체작업을 하시면 됩니다. 일반적으로 이 작업은 정규식과 쌍을 이룰 수 있습니다. 예를 들어, 1,20s/old/new/g
  • *s 명령 특별 지침:
  • 여러 명령을 추가하려면 {command 1: command 2: command 3}을 사용하세요.
  • s 명령 구문: sed -r '명령 바꾸기 s/정규 표현식/내용 바꾸기/탐욕 옵션 g' 파일 이름

    3. Awk 텍스트 분석 도구
  • 는 명령, 정규 표현식(/로 둘러싸여야 함), 비교 및 ​​관계 연산

    으로 구성됩니다. 간격 기호를 정의하려면 옵션에서 -F 매개변수를 사용하세요.
  • $1, $2, $3 등의 순서를 사용하여 파일의 각 줄에서 공백으로 구분된 각 열의 다양한 필드를 나타냅니다. NF 변수는 현재 레코드의 필드 수를 나타냅니다. 옵션 매개변수 '논리판단{명령변수1, 변수2, 변수3}' 파일명

    option

    -F는 필드 구분자를 정의하며, 기본 구분자는 연속된 공백이나 탭

    • -v 가능 변수를 정의하고 값을 할당하는 데에도 사용됩니다. 이 방법은 쉘 변수에서 도입되었습니다.

    • AWK 변수

    NR 현재 레코드 수(모든 파일이 연결된 후 통계)

    • FNR 현재 레코드 수(현재 파일에 대한 통계만 해당)

    • FS 기본 필드 구분 기호는 연속 공백 또는 탭입니다. 여러 개의 서로 다른 기호를 구분 기호로 사용할 수 있습니다. -F[:/]

    • OFS 출력 문자의 기본 구분 기호는 공백입니다

    • root=====x

    NF 현재 읽은 행의 필드 수

    ORS 기본 출력 레코드 구분 기호는 newline

      [ORS 예]
    • # awk - F: 'ORS="=== ===" {print $1,$2}' /etc/passwd
    • root x=====bin x=====

    FILENAME 현재 파일 이름


    【예제 1】AWK 변수 사용

    # awk '{print NR,FNR,$1}' file1 file2
    • 1 1 aaaaa

    2 2 bbbbb

    3 3
    4 1 dddddd
    5 2 eeeeee
    6 3 ffffff
    #

    【【예제 2】 쉘 변수를 인용하는 방법# a = root# awk -v var = $ a -f : '$1 == var {print $0} ' /etc/passwd
    또는 전체 명령을 분할하여 전달하여 셸 변수를 노출합니다.# awk -F: '$1 == "'$a'" {print $0} ' /etc/passwd# a=NF
    # awk -F: '{print $'$a'}' /etc/passwd

    논리 연산(연산을 위해 필드를 직접 참조할 수 있음)



    = += -= /= *=: 할당


    && || !: 논리적 AND 논리적 또는 논리적 NOT

    ~ !~: 정규 일치 여부, 정규 일치는 /regular/ 로 묶어야 합니다.

    • <<= > > = != ==: 문자열을 비교할 때 문자열은 큰따옴표로 묶어야 합니다.

    • $: 필드 참조는 $로 추가해야 합니다. 변수 이름으로 직접 명명됩니다

    • + - * / % + + --: 연산자

    • 이스케이프 시퀀스

    • \ self
    • $ escape $

    t 탭

    • b 백스페이스

    • r 캐리지 리턴 문자

    • n 줄 바꿈 문자

    • c 줄 바꿈 취소

    • 자세한 내용은 다음을 참조하세요.

위 내용은 정규식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.