Liux sed 명령 은 이렇게 간단 합 니 다.

6003 단어
개술
sed 명령 은 문자 흐름 을 위 한 비 대화 형 편집기 입 니 다. 즉, sed 는 사용자 가 대화 하 는 것 을 허용 하지 않 습 니 다.sed 는 줄 에 따라 텍스트 내용 을 처리 합 니 다.셸 에 서 는 sed 를 사용 하여 텍스트 내용 을 대량으로 수정 하 는 것 이 매우 편리 하 다.
sed 명령 의 옵션
일반 function 의 앞 에는 주소 의 제한 이 있 습 니 다. 예 를 들 어 [주소] function 은 우리 의 동작 이 조작 해 야 할 줄 을 표시 합 니 다.다음은 구체 적 인 예 를 통 해 sed 의 사용 방법 을 직관 적 으로 살 펴 보 겠 습 니 다.
줄 삭제
//test. txt 내용 은 다음 과 같 습 니 다 11 aa 22 bb 33 cc 23 dd 55 2esed '1,2d' test.xx
출력: 33 cc 23 dd 55 2e
그 중에서 1, 2d 중의 d 는 삭 제 를 표시 하고 d 앞 에 있 는 삭 제 된 줄 의 주 소 를 표시 하 며 1, 2 는 하나의 주소 범 위 를 나타 내 는데 그것 이 바로 첫 번 째 줄 과 두 번 째 줄 을 삭제 하 는 것 이다.주소 범 위 는 일반적으로 m 이 고 n 은 m 와 n 줄 사이 의 모든 줄 을 조작 하 는 것 을 나타 내 며 m 줄 과 n 줄 도 포함한다.sed 의 주소 지정 에 서 는 m 줄 과 그 뒤의 모든 줄 을 마지막 과 같이 조작 할 수 있 습 니 다.m, $d 는 m 줄 과 그 뒤의 모든 줄 내용 을 삭제 하 는 것 입 니 다.물론 2d 는 두 번 째 줄 만 삭제 한 다 는 뜻 으로 한 줄 을 조작 할 수 있 습 니 다.숫자 범위 m, n 을 사용 하여 여러 줄 구간 을 표시 하고 m 가 한 줄 을 표시 하 는 것 을 제외 하고 우 리 는 정규 표현 식 을 사용 하여 조건 에 맞 는 줄 을 선택 하고 이 줄 들 을 조작 할 수 있 습 니 다. 똑 같은 것 은 위의 파일 입 니 다.sed '/2/d' test.txt
출력: 11 aa 33 cc
위의 명령 중/2/는 정규 표현 식 입 니 다. sed 에서 정규 표현 식 은/.../두 개의 슬 래 쉬 중간 에 쓰 여 있 습 니 다. 이 정규 표현 식 은 2 가 포 함 된 줄 을 모두 찾 아 해당 하 는 동작 을 수행 하 는 것 입 니 다. 즉, 2 가 포 함 된 줄 을 모두 삭제 하 는 것 입 니 다. 2 로 시작 하 는 줄 만 삭제 하려 면 정규 표현 식 만 수정 하면 됩 니 다.sed '/^2/d' test.txt
출력: 11 aa 33 cc 55 2e
신규 줄sed '1a hello world' test.txt
출력: 11 aa hello world 22 bb 33 cc 23 dd 55 2e
그 중에서 a 명령 은 지 정 된 줄 뒤에 한 줄 을 추가 하고 1a 는 첫 줄 뒤에 한 줄 을 추가 하 며 추 가 된 내용 은 a 뒤의 내용 입 니 다. a 의 앞 에 주소 제한 이 없 으 면 모든 줄 뒤에 지 정 된 문자열 을 추가 합 니 다.sed '1i hello world' test.txt
출력: hello world 11 aa 22 bb 33 cc 23 dd 55 2e
명령 i 는 지정 한 줄 앞 에 한 줄 을 삽입 하고 삽입 한 내용 은 그 뒤의 문자열 임 을 표시 합 니 다.
줄 바 꾸 기sed '1c hello world' test.txt
출력: hello world 22 bb 33 cc 23 dd 55 2e
명령 c 는 지정 한 줄 의 모든 내용 을 바 꾸 고 그 뒤의 문자열 로 바 꿉 니 다. 모든 추가, 삭제, 바 꿉 니 다. 이 명령 들 앞의 주소 수식 은 주소 공간 을 지정 할 수도 있 고 정규 표현 식 을 사용 할 수도 있 습 니 다. 명령 은 선택 한 주소 조건 에 맞 는 모든 줄 에 적 용 됩 니 다. 예 를 들 어:sed '/^2/c hello world' test.txt
출력: 11 aa hello world 33 cc hello world 55 2e
2 로 시작 하 는 줄 을 바 꿉 니 다. 그 내용 은 c 명령 뒤의 문자열 입 니 다.
전체 줄 대신 부분 문자열 바 꾸 기
sed 에 서 는 위의 명령 이 전체 줄 을 대상 으로 하 는 것 을 제외 하고 교체 명령 도 제공 합 니 다. 이 명령 은 특정한 줄 의 일부 문자열 을 조작 합 니 다. 다음은 간단 한 예 를 들 어 같은 텍스트 내용 으로 다음 명령 을 수행 합 니 다.sed 's/aa/AA/' test.txt
출력: 11 AA 22 bb 33 cc 23 dd 55 2e
여기 서 말 하 는 것 은 s 명령 입 니 다. 실행 결 과 는 우리 파일 의 aa 가 AA 로 바 뀌 었 습 니 다. s 명령 뒤에 세 개의 슬 래 쉬 로 구 분 된 두 문자열 을 연결 하 는 것 을 보 겠 습 니 다. 그 의 미 는 s/바 꿀 문자열/새 문자열/즉, 뒤의 AA 로 파일 에 나타 난 앞 aa 를 바 꾸 는 것 입 니 다.실제로 이 바 꾸 기 는 줄 마다 만 나 는 첫 번 째 aa 만 바 꿉 니 다. 파일 의 내용 을 수정 하 겠 습 니 다.
//test.txt 11 aa 22 bb 33 cc 23 dd 55 2e 66 aaff ccaa zz ggaa sed 's/aa/AA/' test.txt
출력: 11 AA 22 bb 33 cc 23 dd 55 2e 66 AAff ccaa zz ggAA
여섯 번 째 줄 의 ccaa 에 있 는 aa 는 바 뀌 지 않 았 음 을 볼 수 있 습 니 다. 즉, 이 때 각 줄 에서 검색 한 첫 번 째 aa 문자열 만 바 꾸 었 습 니 다. 그러면 한 줄 에 있 는 모든 조건 에 맞 는 문자열 을 바 꾸 려 면 매개 변수 g 를 사용 할 수 있 습 니 다. 예 를 들 어 명령 을 다음 과 같이 수정 할 수 있 습 니 다.sed 's/aa/AA/g' test.txt
출력: 11 AA 22 bb 33 cc 23 dd 55 2e 66 AAff ccAA zz ggAA
마지막 슬 래 쉬 뒤에 g 옵션 을 추가 한 후 전역 교 체 를 표시 합 니 다. 즉, 한 줄 에 있 는 모든 조건 에 맞 는 오래된 문자열 이 첫 번 째 문자열 이 아 닌 새 문자열 로 바 뀌 는 것 입 니 다.다른 줄 에 대한 작업 과 마찬가지 로 s 명령 도 주소 선택 을 할 수 있 습 니 다. 그 주소 사용 방법 은 우리 가 전에 했 던 것 과 같 습 니 다. 즉, s 앞 에 주소 공간 제한 을 추가 하 는 것 입 니 다. 예 를 들 어:sed '1s/aa/AA/g' test.txt
출력: 11 AA 22 bb 33 cc 23 dd 55 2e 66 aaff ccaa zz ggaa
첫 번 째 줄 만 바 꾸 는 것 을 볼 수 있 습 니 다. 다른 주소 제한 방법 도 사용 할 수 있 습 니 다. 우 리 는 m, n 의 한정 을 사용 할 수 있 습 니 다. 예 를 들 어:sed '5,$s/aa/AA/g' test.txt
출력: 11 aa 22 bb 33 cc 23 dd 55 2e 66 AAff ccAA zz ggAA
파일 끝 에 있 는 모든 줄 을 검색 하고 바 꾸 는 것 을 표시 합 니 다. 같은 s 명령 의 주소 제한 도 정규 표현 식 으로 조건 에 맞 는 줄 을 제한 한 다음 에 이 줄 에서 문자열 을 검색 하고 바 꾸 는 것 을 지원 합 니 다. 예 를 들 어:sed '/^[0-9]/s/aa/AA/g' test.txt
출력: 11 AA 22 bb 33 cc 23 dd 55 2e 66 AAff ccAA zz ggaa
우 리 는 s 명령 앞 에/^ [0 - 9]/이 수식 을 추 가 했 습 니 다. 이 정규 표현 식 은 숫자 로 시작 하 는 모든 줄 에 대해 s 작업 을 수행 하 는 것 을 표시 합 니 다.
또 하 나 는 s/바 꿀 문자열/새 문자열/이 형식 에서/구분자 로 서 일정한 것 이 아 닙 니 다. s 명령 을 사용 할 때 우 리 는 다른 구분자 를 사용 할 수 있 습 니 다. 실제로 s 뒤에 있 는 문 자 는 구분자 이기 때문에 반드시/기호 가 아 닙 니 다.예 를 들 면:echo 'aabbccaadd' | sed s#aa#AA#g
출력: AAbbccAAdd
여기 s 명령 뒤에 따 르 는\# 기호 가 구분자 로 되 어 있 습 니 다.
줄 내용 검색 및 출력
sed 는 조건 에 맞 는 줄 을 검색 하고 이 줄 의 내용 을 출력 하 는 p 명령 도 제공 합 니 다. 예 를 들 어:
//test.txt 11 aa 22 bb 33 cc 23 dd sed '2p' test.txt
출력: 11 aa 22 bb 22 bb 33 cc 23 dd
두 번 째 줄 이 출력 되 는 것 을 볼 수 있 습 니 다. 그러나 sed 는 파일 의 모든 내용 을 한 번 더 출력 한 것 같 습 니 다. 두 번 째 줄 은 한 번 더 출력 한 것 같 습 니 다. 실제로 sed 는 기본 적 인 상황 에서 모든 표준 입력 데 이 터 를 표준 출력 으로 다시 출력 합 니 다. - n 옵션 을 추가 하여 sed 는 출력 이 처 리 된 줄 일 뿐 입 니 다.출력 하기 전에 표준 입력 에서 가 져 온 모든 줄 의 내용 이 아 닙 니 다. 예 를 들 어:sed -n '2p' test.txt
출력: 22 bb
이렇게 하면 p 명령 의 처리 결과 만 출력 할 수 있 습 니 다. - n 옵션 은 보통 p 명령 과 공동으로 사용 합 니 다. 다른 추가, 삭제, 줄 바 꾸 기 명령 은 - n 옵션 이 필요 없습니다.
수정 사항 을 파일 에 적용 하기
우리 가 이전에 한 모든 실험 은 실제 적 으로 test. txt 파일 의 내용 을 수정 하지 않 았 다. 즉, 우리 가 본 수정 결 과 는 콘 솔 에 만 출력 되 고 파일 test. txt 의 내용 은 수정 되 지 않 았 다. 우 리 는 - i 옵션 을 사용 하여 sed 에 게 파일 의 내용 을 직접 수정 하 는 것 이 아니 라 수정 결 과 를 터미널 에 출력 할 수 있다. 예 를 들 어:sed -i '2d' test.txt
명령 이 실 행 된 후에 우 리 는 test. txt 의 두 번 째 줄 이 없어 진 것 을 발견 했다.
sed 정규 문자
sed 의 명령 앞 에 주소 범 위 를 제한 할 수 있다 는 것 을 알 고 있 습 니 다. 파일 의 일부 조건 에 맞 는 줄 에 대해 해당 하 는 작업 을 수행 할 수 있 습 니 다. 그 중에서 우 리 는 정규 표현 식 으로 작업 할 줄 을 선택 할 수 있 습 니 다. sed 의 정규 문법 은 다른 명령 의 정규 문법 과 다 를 수 있 습 니 다. 여기 서 sed 에서 자주 사용 하 는 정규 메타 문 자 를 열거 할 필요 가 있 습 니 다.
$는 줄 의 끝 을 표시 합 니 다 ^ 줄 의 끝 을 표시 합 니 다 [a - z0 - 9] 는 문자 범 위 를 표시 합 니 다 [^] 는 문자 가 집 중 된 문 자 를 제외 한 문 자 를 표시 합 니 다.
sed 의 정규 중 () 과 {m, n} 은 전의 가 필요 합 니 다. 임의의 문 자 를 표시 합 니 다.
  • 0 개 또는 여러 개 + 한 번 또는 여러 번?0 회 또는 1 회 | 표시 또는 문법
  • 좋은 웹페이지 즐겨찾기