예비 지식: grep 와 sed 의 진급 용법
(1) 몇 개의 매개 변수
- A: 뒤에 숫자 를 추가 할 수 있 습 니 다. after 라 는 뜻 으로 이 줄 을 열거 하 는 것 을 제외 하고 후속 n 줄 도 열거 합 니 다.
- B: 뒤에 숫자 를 추가 할 수 있 습 니 다. befer 라 는 뜻 입 니 다. 이 줄 을 열거 하 는 것 을 제외 하고 앞의 n 줄 도 열거 합 니 다.
-- color = auto 는 정확 한 데 이 터 를 캡 처 하여 색상 을 표시 할 수 있 습 니 다.
색상 표시 자동 추가 방법:
$sudo vim ~/.bashrc
alias grep='grep --color=auto'
저장 후 종료
$source ~/.bashrc
(2) 몇 가지 중요 한 기호
^ 기호, 문자 집합 일치 (괄호 []) 내 와 외 는 다 릅 니 다!![] 내 에 서 는 역방향 선택 을 대표 하고 [] 외 에 행 수 를 정 하 는 의 미 를 대표 한다.
주의: "."즉, 문장 끝 에 마침 표를 찍 을 때 추가 해 야 합 니 다.
문자 (\) 를 벗 어 나 특정한 의 미 를 해제 합 니 다.
우리 가 두 개의 연속 또는 두 개 이상 의 똑 같은 자 모 를 꺼 내 려 면 o *, oo * 를 추가 해 야 합 니까? 아니면 ooo * 를 추가 해 야 합 니까?먼저 * 의 의 미 를 보면 0 개 이상 앞 에 있 는 RE 문 자 를 반복 하 는 것 을 의미 하기 때문에 [o *] 는 빈 문자 나 o 이상 의 문 자 를 가 진 것 을 의미 하고 [o *] 는 첫 번 째 o 가 반드시 존재 해 야 한 다 는 것 을 의미 하 며 두 번 째 o 는 있어 도 되 고 없어 도 되 는 여러 o 이기 때문에 o, oo, ooo, oooo 등 이 포함 되 어 있 으 면 모두 열거 할 수 있다.
* 화해시키다 . g * 는 빈 문자 나 한 개 이상 의 g 를 대표 합 니 다. g * g 이면 g, gg, gg, gg 등 을 의미 합 니 다. 그래서 이런 것 은 조회 한 줄 에 한 개 이상 의 g 가 있 으 면 g * g 의 수요 에 부합 합 니 다. g. g 는 중간 에 세 개의 임 의 문자 가 있 고 양쪽 은 g 의 문자열 g. * g 입 니 다. 우 리 는 두 가 지 를 결합 하여 g. * g 의 형식 을 형성 하여 이 형식 을 분석 할 수 있 습 니 다.우 리 는 먼저 이러한 내용 을 알 고 있 습 니 다. * 0 또는 여러 개의 앞 글 자 를 반복 할 수 있 습 니 다. 임의의 문자 이기 때문에. * 는 0 또는 여러 개의 임 의 문 자 를 대표 합 니 다.이렇게 하면 g. * g 는 양 끝 이 g 이 고 중간 이 여러 개의 임의의 문자 인 문자열 을 대표 한 다 는 것 을 알 수 있 습 니 다.
{}, o\{2\} 은 적어도 두 개의 o 가 있 는 문자열 을 찾 는 것 을 의미 합 니 다. 분명히 구 글, goooogle 이 이 요구 에 부합 되 는 것 을 알 수 있 습 니 다. ooo * 는 그 뜻 과 같 습 니 다.그런데 만약 에 저희 가 o 가 나 오 는 횟수 를 제한 하고 싶다 면 요?go\{2, 4\} o 의 출현 횟수 를 제한 할 수 있 습 니 다. g 뒤에 2 - 4 개의 o 가 연결 되 어 있 음 을 표시 합 니 다.만약 우리 가 그 뒤에 g 을 하나 더 추가 하면 go\{2, 4\\} g 가 된 후에 조건 을 만족 시 키 는 것 은 goog, gooog, goooog 밖 에 없다.4 를 빼 고 go\{2,\} g 로 바 꾸 면 gooo * g 와 등가 가 됩 니 다.(메모:\\문 자 를 벗 기기 위해 서 는 특수 기호의 특수 한 의 미 를 제거 하 는 역할 을 합 니 다) 응용: 우리 가 grep 를 파이프 명령 에 사용 할 때 큰 역할 을 하여 적은 노력 으로 큰 효 과 를 거 둘 것 입 니 다.예: ls - l | grep - i 'm' #디 렉 터 리 에 있 는 - l 에 표 시 될 파일 정보 에 m 또는 M 이 들 어 있 는 파일 을 찾 을 수 있 습 니 다.
××××××××××××××××××××××××××구분자×××××××××××××××××××××××××××××××××××××××
(1) 아래 명령 을 실행 해 보십시오.
$sudo nl /etc/passwd | sed '1,4d'
이 명령 은/etc/passwd 의 첫 줄 에서 네 번 째 줄 까지 의 내용 을 삭제 한 후에 이 파일 의 내용 을 보 여 줍 니 다. 비록 나 무 는 파일 에서 삭제 되 었 지만, 그것 은 standin 에 입력 할 때 1 ~ 4 줄 의 내용 을 차단 할 뿐 입 니 다.세 번 째 줄 에서 시작 한 뒤의 모든 내용 을 출력 을 차단 하려 면 어떻게 해 야 합 니까?grep 에 있 는 $의 용법 을 생각해 보 세 요. '3, $d' 로 바 꾸 면 됩 니 다.
(2) 우리 가 이 파일 안의 2 - 5 줄 내용 을 캡 처 하려 면 어떻게 해 야 합 니까?
sed 기능 에서 p 가 정 보 를 출력 할 수 있다 는 것 을 알 고 있 습 니 다. '2, 5p' 를 이용 하면 괜 찮 지 않 습 니까?이 명령 을 실행 한 후에 우 리 는 파일 내용 이 모두 출력 되 었 을 뿐만 아니 라 2 - 5 줄 의 모든 줄 뒤에 똑 같은 줄 이 있다 는 것 을 알 게 될 것 이다. 분명히 이 명령 은 우리 가 원 하 는 것 이 아니다.man sed 는 n 의 인 자 를 더 하면 우리 가 생각 하 는 것 에 도달 할 수 있다 는 것 을 알 수 있 습 니 다. 구체 적 인 n 기능 man 은 단번에 볼 수 있 습 니 다.
(3)sed 's/#the string'll be replace/#new string/g'
이 명령 은 출력 된 파일 의 내용 부분 을 우리 가 생각 하 는 내용 으로 쉽게 바 꿀 수 있다.새 형의 개인 요리 에는 이 명령 의 응용 을 설명 하 는 대표 적 인 예 가 있다.
\# IP 주소 꺼 내기
$ /sbin/ifconfig eth0
$ /sbin/ifconfig eth0 | grep 'inet addr'
$ /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
$ /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' |\
>sed 's/Bcast.*$//g'
이 명령 은 매우 긴 것 같 습 니 다. 우 리 는 간단 한 셸 을 이용 하여 그것 의 기능 을 실현 할 수 있 습 니 다.
$ cat > find_ip
#!/bin/sh -
#This is a shell to find your ip
/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
^D
$sudo chmod +x find_ip
$./find_ip
(4) 위험한 동작: sed 는 내용 을 직접 수정 할 수 있다.
- i: 화면 출력 예 1: sed - i 's/. $/대신 파일 내용 을 직접 수정 할 수 있 습 니 다.g 'regular. txt regular. txt 문서 에' 끝 '이 있 으 면 바 뀝 니 다!예 2: sed - i '$a\# This is a test' regular. txt 는 문장 끝 에 'This is a test' 를 붙인다.
vi 가 필요 없 이 문 서 를 간단하게 수정 할 수 있 습 니 다. 이것 은 좋 은 기능 이지 만 시스템 을 완전히 끊 지 않도록 조심해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.