정규 표현 식 및 Linux 3 대 텍스트 처리 도구 에 대한 자세 한 설명

grep,sed,awk 는 모두 텍스트 처리 도구 입 니 다.모두 텍스트 처리 도구 이지 만 각자 의 장단 점 이 있 습 니 다.하나의 텍스트 처리 명령 은 다른 것 으로 완전히 바 꿀 수 없습니다.그렇지 않 으 면 세 개의 텍스트 처리 명령 이 나타 나 지 않 습 니 다.
정규 표현 식
1.일치 하 는 문자 의 종류
[a-z]:소문 자
[A-Z]:대문자
[a-Z]:작 거나 대문자
[0-9]:숫자
[a-zA-Z0-9]:알파벳 이나 숫자 와 일치 하 는 문 자 를 표시 합 니 다.
.:임의의 문자 1 개 일치,빈 칸 제외
[0-f]:16 진수
abc|def:abc 또는 def
a(bc|de)f:abcf 또는 adef
\<:단어 머리 단 어 는 일반적으로 빈 칸 이나 특수 문자 로 구분 되 며,연속 적 인 문자열 은 단어 로 여 겨 집 니 다.
단어 끝
[^표현 식]:소문 자 를 제외 한 모든 문 자 를 유추 합 니 다.
2.다음 기호 와 일치 하 는 수량 을 제어 합 니 다.
이런 기호의 왼쪽 에는 위의 첫 번 째 표현 식 이 있어 야 한다.
표현 식*:0 또는 n 글자
표현 식+1 또는 n 글자
표현 식0 또는 1 글자
표현 식{n}:n 글자
표현 식{n:m}:n 에서 m 문자
표현 식{n,}:최소 n 글자
[예][a-z]*는 0 개 이상 의 소문 자 와 일치 함 을 나타 낸다.
3.일치 하 는 문 자 를 머리 끝 에 제어 합 니 다.
^표현 식:머리 일치
표현 식$:끝 부분 일치
2.Linux 3 대 텍스트 처리 도구
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:파일 이름 을 지정 하고 새 파일 에 동작 을 기록 합 니 다.
명령:
a∶추가 append,
c:변경,
d:삭제 delete,
i:insert 를 삽입 하면 i 뒤에 문자열 을 연결 할 수 있 습 니 다.이 문자열 들 은 새로운 줄 에 나타 납 니 다(현재 이전 줄)
p:인쇄 인쇄
s:substitute 대신 직접 교체 작업 을 할 수 있 습 니 다.보통 이 s 의 동작 은 정규 표현 식 과 어 울 릴 수 있다.예 를 들 어 1,20s/old/new/g
*s 명령 특별 설명:
{명령 1:명령 2:명령 3}을 사용 하면 여러 명령 을 추가 로 사용 할 수 있 습 니 다.
문법 2:sed  -r  '대체 명령 s/정규 표현 식/대체 내용/탐욕 옵션 g'  파일 이름
포 지 셔 닝 의 두 가지 방법:
① 디지털 포 지 셔 닝(줄 번호 포 지 셔 닝 입력)
십진수
1:일방 통행
1,3:범 위 는 첫 줄 에서 세 번 째 줄 까지
2,+4:일치 하 는 줄 후 몇 줄
4,~3:네 번 째 줄 에서 다음 3 의 배수 줄 까지
2~3:두 번 째 줄 부터 세 줄 간격 으로 하 는 줄
$:끝 줄
1!:첫 줄 을 제외 한 줄.
[예]sed-n'1p'/etc/passwd
② 정규 표현 식 포 지 셔 닝
정규 는 반드시//로 싸 야 한다
확장 정규 는-r 매개 변수 나 전의 가 필요 합 니 다.
정규 표현 식 을 사용 할 수 있 는 하위 모드,즉 작은 괄호()를 바 꾸 고\1,\2 대표 하위 모드 를 바 꿀 수 있 습 니 다.
【예】sed-r's/(.)(.)/\2\\1/file 1 은 일치 하 는 첫 번 째 부분 과 두 번 째 부분 을 교체 하 는 것 을 나타 낸다.
*탐욕 옵션:g 를 채 우 면 한 줄 의 모든 일치 항목 을 바 꾸 는 것 을 의미 합 니 다.
3.awk 텍스트 분석 도구
명령,정규(/로 포위 해 야 함),비교 와 관계 연산 을 조합 하여 만 든 것 이다.
option 의-F 매개 변 수 를 사용 하여 간격 기 호 를 정의 합 니 다.
$1,$2,$3 등의 순서 로 files 의 줄 마다 간격 기호 로 구 분 된 각 열의 다른 도 메 인 을 표시 하고 NF 변 수 는 현재 기 록 된 필드 수 를 표시 합 니 다.
문법
awk-옵션 매개 변수  '논리 적 판단{명령 변수 1,변수 2,변수 3}'파일 이름
옵션
-F 정의 필드 구분자,기본 구분자 가 연속 적 인 빈 칸 이나 탭 문자 입 니 다.
-v 변 수 를 정의 하고 값 을 부여 하 는 것 도 셸 변수 에서 다음 방식 으로 도입 할 수 있 습 니 다.
AWK 변수
NR 현재 기 록 된 개수(모든 파일 이 연 결 된 통계)
FNR 현재 기 록 된 개수(현재 파일 의 통계 만,전부 가 아 닙 니 다)
FS 필드 구분자 기본 값 은 연속 스페이스 바 나 탭 문자 입 니 다.여러 개의 다른 기 호 를 사용 하여 구분자-F[:/]를 만 들 수 있 습 니 다.
OFS 출력 문자 의 구분 자 는 기본적으로 공백 입 니 다.
# awk -F: 'OFS="=====" {print $1,$2}' /etc/passwd
root=====x
NF 현재 읽 은 줄 의 필드 개수
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 ccccc
4 1 dddddd
5 2 eeeeee
6 3 ffffff
# 
[예 2]셸 변 수 를 인용 하 는 방법

# a=root
# awk -v var=$a -F: '$1 == var {print $0}' /etc/passwd
            , shell    ,
# awk -F: '$1 == "'$a'" {print $0}' /etc/passwd
# a=NF
# awk -F: '{print $'$a'}' /etc/passwd
논리 연산(도 메 인 을 직접 참조 하여 연산 할 수 있 음)
=+=-=/=*=할당
&& || ! 논리
~ !~  정규 와 일치 하거나 일치 하지 않 으 면 정규/정규/로 포위 해 야 합 니 다.
< <= > >= != ==  관계 가 문자열 을 비교 할 때 문자열 을 더 블 따옴표 로 가 져 와 야 합 니 다.
$필드 참조:필드 인용 은$를 추가 해 야 하 며,변 수 는 직접 변수 이름 으로 가 져 옵 니 다.
+ - * / % ++ --  연산 자
전의 서열
자신
\\$전의$
\t 탭 문자
\\b 체크 문자
\r Enter 문자
줄 바 꿈 부호
줄 바 꾸 기 취소
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 정규 표현 식 과 Linux 3 대 텍스트 처리 도구 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기