Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed

grep 텍스트 필터 명령
1. 정의
Global search regular expression and print out the line 전면 검색 연구 정규 표현 식 및 표시
grep 텍스트 필터 명령 은 강력 한 텍스트 검색 도구 입 니 다. 사용자 가 지정 한 '모드' 에 따라 대상 텍스트 를 일치 하 게 검사 하고 일치 하 는 줄 을 인쇄 합 니 다.
정규 표현 식 이나 문자 및 기본 텍스트 문자 로 작 성 된 필터 조건
2. grep 형식
형식:          grep 匹配条件 处理文件 -i             ##대소 문자 무시 -E             ##"|"이 있 을 때 는 - E 를 추가 하여 셸 이 파이프 문자 로 인식 되 지 않도록 해 야 합 니 다 -v.             ##포함 되 지 않 음, 역방향 일치 \ ##키워드 앞 뒤 가 맞지 않 고 키워드 만 일치 합 니 다 ^关键字\>   ##키워드 로 시작 하 는 줄 \   ##以关键字结尾的行
^关键字\>|\      ##”|"表示或
.*              ##키워드 간 에 임의의 문자 일치 'w....s'   ##w 에서 s 사이 에 4 글자 'w..'         ##w 후 2 글자
예 를 들 어: 1. passwd 에 있 는 루트 문 자 를 포함 하 는 줄 을 걸 러 냅 니 다. 2. passwd 에 있 는 루트 문자 로 시작 하 는 줄 을 걸 러 냅 니 다.
3. grep 의 정규 표현 식^westos      ##westos 키워드 로 시작 하 는 westos$     ##westos 키워드 로 끝 나 는 'w....s'   ##w 와 s 사이 에 4 글자 'w.....' 가 있 습 니 다.   ##w 후 5 글자 '.....s'   ##s 전에 5 글자 가 있었어 요.
4. grep 에서 문자 의 일치 횟수 설정* 문자 출현 [0 - 임 의 회] \? 이전 일치, 문자 출현 [0 - 1 회] \+ 이전 일치, 문자 출현 [1 - 임 의 회] \从前匹配,字符出现 [n 次 ]
\ 字符出现 [ 最少出现 m 次,最多出现 n 次 ]
+\> 이후 일치, 문자 출현 [1 - 임 의 회]
5. grep 에서 문자 의 일치 위치 설정^关键字 키워드 로 시작 하 는 줄 关键字$ 키워드 로 끝 나 는 줄 \不匹配关键字前面的
关键字\> 은 키워드 뒤에 있 는 줄 \ 과 일치 하지 않 습 니 다. 키워드 앞 뒤 가 일치 하지 않 고 키워드 만 일치 합 니 다.
6. grep 정규 표현 식 과 egrp 확장 정규 표현 식
정규 grep 는 확장 정규 표현 식 을 지원 하지 않 습 니 다. 세로 선 은 '또는' 의 확장 정규 표현 식 메타 문 자 를 표시 하 는 데 사 용 됩 니 다. 정규 grep 는 식별 할 수 없습니다. 역 슬 래 쉬 를 더 하면 이 문 자 는 확장 정규 표현 식 으로 번역 되 었 습 니 다. egrp 와 grep - E 와 같 습 니 다.
2. sed 줄 편집기
1. 정의:
stream editor 는 순수 ASCII 코드 의 텍스트 처 리 를 할 때 현재 처 리 된 줄 을 임시 버퍼 에 저장 합 니 다. "패턴 공간"(pattern space) 이 라 고 합 니 다.어떤 줄 의 sed 만 처리 하 는 것 이 패턴 조건 에 부합 되 는 지 지정 할 수 있 습 니 다. 조건 에 부합 되 지 않 는 처리 가 완 료 된 후에 버퍼 의 내용 을 화면 으로 보 내 고 다음 줄 을 처리 할 수 있 습 니 다. 이렇게 계속 반복 하면 파일 의 끝 을 알 수 있 습 니 다.
2. sed 명령 형식sed [options] '模式条件' file -i 원본 파일 에 입력 -n 은 모드 공간 에서 내용 의 출력 -e 을 두 번 으로 나 누 어 실행 하 는 것 을 억제 합 니 다.
3. sed 문자 처리 의 다양한 모드
01) p 모드 동작 (표시)
sed /^#/p fstab       ##复制以#开头的行
sed -n /^#/p fstab    ##复制以#开头的行并显示
sed -n '/^#/!p' fstab ##除了带#号的不显示,其余都显示

1. fstab 파일 의 두 번 째 줄 에서 여섯 번 째 줄 cat - n fstab | sed - n '2, 6p' 표시
2. fstab 파일 의 여섯 번 째 줄 cat - n fstab | sed - n '6p' 만 표시
3. fstab 파일 의 두 번 째 줄 과 여섯 번 째 줄 cat - n fstab | sed - n - e '2p' - e '6p' 또는 cat - n fstab | sed - n - e '2p; 6p' 표시
4. 두 번 째 줄 에서 여섯 번 째 줄 까지 보이 지 않 는 것 을 제외 하고 나머지 는 cat - n fstab | sed - n '2, 6! p' 가 표 시 됩 니 다.
02) d 모드 동작 (삭제)
sed '/^#/d' fstab     ##将以#开头的行删除
sed -ne '/^#/d' fstab ##将带#开头的行删除,并显示结果

1. fstab 파일 에서\# 로 시작 하 는 줄 과 빈 줄 sed - e '/^\#/d' - e '/^ $/d' fstab 삭제
2. fstab 파일 의 네 번 째 줄 에서 여섯 번 째 줄 cat - n fstab | sed '4, 6d' 삭제
3. fstab 파일 의 네 번 째 줄 과 여섯 번 째 줄 cat - n fstab | sed - e '4d; 6d' 삭제
4. fstab 파일 에서 UUID 로 시작 하지 않 는 줄 sed '/^ UUID/! d' fstab 삭제
03) a 모드 동작 (뒤에 추가)
sed '/^UUID/ahello' fstab          ##在UUID开头的行后加hello
sed '/^UUID/ahello
westos' fstab ##在UUID开头的行后加多行(\表示换行)

04) i 모드 동작 (삽입 즉 앞에서 추가)
sed '/^UUID/ihello' fstab         ##在UUID开头的行前插入hello
sed '/^UUID/ihello
westos' fstab ##在UUID开头的行前插入多行(\表示换行)

05) c 모드 조작 (교체)
sed '/^#/chello' fstab            ##将以#开头的行替换为hello

06) w 모드 작업 (기록 즉시 통합)
sed '6r /mnt/hello' /mnt/fstab    ##将hello文件里的所有内容添加到fstab文件的第6行

4. sed 의 다른 용법
01) 줄 번호 와 내용
sed -n '/^UUID/=' fstab           ##显示以UUID开头的行的行号
sed -ne '/^UUID/=;/^UUID/p' fstab ##显示行号并显示内容
sed -ne '/^UUID/=;/^UUID/p' fstab | sed 'N;s/
/ /g' ##将行号和内容一行显示(|前是两份输出,N表示提前将下一份输出的结果提取 "
"表示换行符)

02) 파일 방식 호출
vim rule
1 /^UUID/=
sed -nf rule fstab        ##用文件调用,对fstab文件进行操作
vim rule
1 /^UUID/=
2 /^UUID/p
sed -nf rule fstab        ##用文件调用,对fstab文件进行操作

03) 교체
sed -i '=' passwd
sed -i 'N;s/
/ /g' passwd sed 's/nologin/bash/g' passwd ##更换全文的nologin为bash sed '1,5s/nologin/bash/g' passwd ##换1-5行的nologin为bash sed '5s/nologin/bash/g' passwd ##只换第五行 sed -e '5s/nologin/bash/g;3s/nologin/bash/g' passwd sed '/daemon/,/mail/s/nologin/bash/g' passwd ##用字符作标准进行替换

대체/시 @ 문자 로 대체
sed 's@\@ @g' passwd

04) 띄 우기
sed 'G' passwd                  ##加空行
sed '$!G' passwd                ##最后一行不加空行,其余都加
sed -n '$p' passwd              ##打印最后一行

좋은 웹페이지 즐겨찾기