Linux 기초 - 정규 표현 식 정리
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.