`sed` 명령을 사용하여 여러 줄을 바꾸는 방법

How Replace Multiple Lines Using Sed Command



때로는 파일의 여러 줄을 특정 문자나 텍스트로 바꿔야 합니다. Linux에는 파일의 여러 줄을 대체하는 다양한 명령이 있습니다. `sed` 명령은 이러한 유형의 작업을 수행하는 명령 중 하나입니다. `sed`의 정식 형태는 Steam Editor이며, 주로 정규 표현식을 이용하여 다양한 방식으로 텍스트를 읽고 변환하는 데 사용됩니다. 이 명령을 사용하여 파일의 여러 줄을 다른 방식으로 바꾸는 방법은 이 자습서에서 설명합니다.

일반적으로 사용되는 `sed` 치트 시트:

`sed` 명령에서 가장 일반적으로 사용되는 문자는 다음 표에 설명되어 있습니다.







성격 목적
에게 내용을 추가할 때 사용합니다.
NS 콘텐츠 분기에 사용됩니다.
내용을 변경할 때 사용합니다.
NS 파일의 한 줄을 삭제할 때 사용합니다.
NS 파일의 첫 번째 줄을 삭제할 때 사용합니다.
NS 보유 텍스트에서 복사하는 데 사용되었습니다.
NS 보유 텍스트에서 추가하는 데 사용됩니다.
시간 보유 텍스트에 복사할 때 사용합니다.
시간 보유 텍스트에 추가하는 데 사용됩니다.
NS 삽입할 때 사용합니다.
NS 대체 라인을 인쇄하는 데 사용됩니다.
N 다음 줄로 이동할 때 사용합니다.
N 다음 입력 줄을 추가하는 데 사용됩니다.
NS 인쇄하는 데 사용됩니다.
NS 첫 번째 줄을 인쇄하는 데 사용됩니다.
뭐라고 요 종료할 때 사용합니다.
NS 즉시 종료할 때 사용합니다.
NS 파일을 읽을 때 사용합니다.
NS 파일에서 행을 읽는 데 사용됩니다.
NS 대체하는 데 사용됩니다.
NS 대체 테스트에 사용됩니다.
NS 대체가 없는지 테스트하는 데 사용됩니다.
~에 파일에 쓰는 데 사용됩니다.
파일에 줄을 쓰는 데 사용됩니다.
NS 패턴을 교환하고 유지하는 데 사용됩니다.
그리고 번역하는데 사용됩니다.
와 함께 라인을 지울 때 사용합니다.
'=' 행 번호를 인쇄하는 데 사용됩니다.

터미널에서 `sed` 명령을 사용하여 여러 줄을 교체합니다.

터미널에서 파일의 여러 줄을 대체하기 위해 `sed` 명령을 사용하는 방법은 이 튜토리얼의 이 부분에 나와 있습니다. 라는 이름의 파일 생성 sed.txt 다음 내용으로 이 부분의 명령을 테스트합니다.

sed.txt

sed의 전체 형식은 스트림 편집기입니다.

다른 형식의 텍스트를 읽고 변환하는 데 사용되는 유닉스 유틸리티입니다.

Lee E. McMahon이 개발했습니다.

텍스트 처리에 사용됩니다.

정규식을 지원합니다.

예-1: 두 개의 연속 라인 바꾸기

다음 `sed` 명령은 연속된 두 줄을 다른 줄로 바꿉니다. 여기서 -z 옵션은 대체 텍스트를 추가하기 전에 연속 행을 널 데이터로 대체하는 데 사용됩니다. 명령에 따르면 3rd그리고 4NS파일의 행은 텍스트로 대체됩니다. '매우 유용한 도구' .

$고양이sed.txt
$세드 -와 함께 's/Lee E. McMahon이 개발했습니다. 텍스트에 사용됩니다.
처리 중입니다./매우 유용한 도구입니다./'
sed.txt

명령을 실행하면 다음 출력이 나타납니다.

예-2: 일치 및 전역 플래그를 기반으로 여러 줄 바꾸기

다음 `sed` 명령은 단어로 시작하는 모든 줄을 대체합니다. '그것' '라는 말로 이 줄은 대체됩니다. '.

$고양이sed.txt
$세드 's/^It.*/이 줄은 대체됩니다/g'sed.txt

명령을 실행하면 다음 출력이 나타납니다. 세 줄에는 '라는 단어가 포함되어 있습니다. 그것 ' 파일에. 따라서 이 행은 대체 텍스트로 대체되었습니다.

예-3: match 및 next-line 명령을 기반으로 여러 줄 바꾸기

다음 `sed` 명령은 단어를 대체합니다.' ~이다 '라는 말로 ~였다 ' 다음 줄 명령 'n'으로.

$고양이sed.txt
$세드 ' {n;/is/ {s/is/was/}}'sed.txt

명령을 실행하면 다음 출력이 나타납니다. 여기, '이다' 2에 존재NS그리고 4NS파일의 행, 이 행은 단어에 의해 수정됩니다. '였다' .

`sed` 스크립트 파일을 만들어 여러 줄을 교체합니다.

이전 예에서 `sed` 명령은 터미널에서 실행되었습니다. 하지만 스크립팅 언어이고 스크립트에 여러 문장이 포함되어 있다면 스크립트로 sed 파일을 만드는 것이 좋습니다. 라는 이름의 텍스트 파일을 만듭니다. 학생.txt `sed` 스크립트가 적용될 다음 내용과 함께.

학생.txt

아이디: 111045
이름: 로버트
부서: CSE
배치: 35

아이디: 111876
이름: 요셉
학과: 학사
배치: 27

아이디: 111346
이름: 윌리엄
부서: CSE
배치: 45

아이디: 111654
이름: 찰스
부서: EEE
배치: 41

아이디: 111346
이름: 존
부서: CSE
배치: 25

아이디: 111746
이름: 토마스
부서: CSE
배치: 15

예-4: `sed` 스크립트 파일을 사용하여 파일의 여러 줄 바꾸기

라는 이름의 sed 파일을 만듭니다. 교체 검색 패턴에 따라 여러 줄을 바꾸려면 다음 내용으로. 여기서 '라는 말은 CSE '는 텍스트 파일에서 검색되며, 일치하는 항목이 있으면 35번과 15번을 다시 검색합니다. 파일에 두 번째 일치 항목이 있으면 45번으로 대체됩니다.

교체

/CSE/ {
p;n;
/35/ {
NS/35/오분의 사/;
p;d;
}
/열 다섯/ {
NS/열 다섯/55/;
p;d;
}
}
NS;

다음 명령을 실행하여 파일의 기존 내용을 확인합니다. 'CSE'는 텍스트 파일에 4번 등장했습니다. 35와 15는 두 곳에 존재합니다.

$고양이학생.txt

다음 명령은 sed 스크립트를 기반으로 여러 줄의 내용을 바꿉니다.

$세드 -N -NSreplace.sed 학생.txt

명령을 실행하면 다음 출력이 나타납니다.

결론

`sed` 명령을 사용하여 여러 줄 또는 여러 줄의 내용을 바꾸는 다양한 방법이 이 자습서에 나와 있습니다. sed 파일에서 `sed` 스크립트를 실행하는 방법도 이 튜토리얼에 나와 있습니다. 이 튜토리얼이 독자가 `sed` 명령을 사용하여 파일의 여러 줄을 바꾸는 데 도움이 되기를 바랍니다.