Linux Shell 프로 그래 밍 - 텍스트 처리 grep, sed
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 ##打印最后一行
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법
cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다.
웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다.
reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.