Linux에서 sed 명령어를 사용하는 방법과 예제

Linux에서 sed 명령어 활용하기

Linux 운영체제에서 sed는 매우 유용한 도구로, 텍스트 파일을 조작하고 편집하는 데 사용됩니다. sed는 “스트림 편집기(stream editor)”의 약자로, 주로 파일의 내용을 변경하고 변환하는 역할을 수행합니다. 본 포스트에서는 sed의 기본적인 사용법과 실용적인 예제를 통해 이 강력한 도구를 살펴보겠습니다.

sed 명령어의 기본 개념

sed는 입력 스트림을 처리하여 특정 패턴을 검색하고, 이를 바탕으로 수정 작업을 수행하는 프로그램입니다. 보통 한 줄씩 데이터를 읽어들이며, 해당 줄에서 명령어를 실행한 후 결과를 표준 출력으로 전달합니다. 이 과정에서 파일의 내용을 직접 변경하지 않고, 필요한 경우에만 수정된 결과를 출력할 수 있습니다. sed는 기본적으로 다음과 같은 형식으로 사용됩니다:

sed [옵션] '명령어' 파일명

sed의 주요 기능

sed는 다양한 기능을 제공하며, 그 중 대표적인 기능들은 다음과 같습니다:

  • 검색: 특정 문자열 또는 패턴을 찾아냅니다.
  • 치환: 발견된 문자열을 다른 문자열로 대체합니다.
  • 삭제: 특정 패턴에 일치하는 행을 삭제합니다.
  • 삽입: 지정된 위치에 새로운 내용을 추가합니다.
  • 라인 번호 지정: 특정 행 번호를 기반으로 작업을 수행할 수 있습니다.

sed 명령어 사용법

이제 sed 명령어의 주요 사용법에 대해 알아보겠습니다. 아래의 예제를 통해 sed의 기본적인 동작 방식을 이해할 수 있습니다.

1. 문자열 치환하기

특정 단어를 다른 단어로 변경하고 싶을 때, 다음과 같은 명령어를 사용할 수 있습니다:

sed 's/old_text/new_text/' filename

위 명령어는 filename 파일 내의 모든 ‘old_text’를 ‘new_text’로 대체합니다. 만약 한 번의 대체가 아닌 모든 발생을 변경하고 싶다면, ‘g’ 플래그를 추가할 수 있습니다:

sed 's/old_text/new_text/g' filename

2. 특정 행 삭제하기

특정 패턴이 포함된 행을 삭제하려면 다음과 같은 구문을 사용할 수 있습니다:

sed '/pattern/d' filename

이 명령은 ‘pattern’이 포함된 모든 행을 삭제합니다. 만약 특정 범위의 행을 삭제하고 싶다면, 행 번호를 지정해주면 됩니다:

sed '2,4d' filename

위 예시는 2번째부터 4번째 행까지 삭제하는 방식입니다.

3. 행 추가하기

특정 행 다음에 새로운 내용을 추가하고 싶다면, ‘a’ 명령을 사용할 수 있습니다. 다음 예시를 참고하세요:

sed '2a\New line of text' filename

이 명령은 2번째 행 뒤에 ‘New line of text’를 추가합니다.

4. 패턴을 포함한 행만 출력하기

특정 패턴이 포함된 행만 출력하고 싶다면, ‘-n’ 옵션과 함께 사용할 수 있습니다:

sed -n '/pattern/p' filename

이 명령은 ‘pattern’이 포함된 행만 출력하게 됩니다.

5. 파일 수정하기

실제 파일의 내용을 수정하고 싶다면 ‘-i’ 옵션을 사용하면 됩니다. 다음과 같이 명령을 입력하면 원본 파일이 직접 수정됩니다:

sed -i 's/old_text/new_text/g' filename

sed 명령어의 다양한 활용 예제

sed는 간단한 작업부터 복잡한 작업까지 다양하게 활용될 수 있습니다. 여러 상황에서 어떻게 사용되는지를 몇 가지 예를 통해 살펴보겠습니다.

1. 파일 내 특정 문자열 변경하기

여러 파일에서 특정 문자열을 변경하려면, 다음과 같은 방식으로 사용합니다:

sed -i 's/vdd=1.2/vdd=0.9/g' *.sp

이 명령어는 현재 디렉토리 내의 모든 .sp 확장자를 가진 파일에서 ‘vdd=1.2’를 ‘vdd=0.9’로 변경합니다.

2. 공백 행 제거하기

파일 내의 모든 공백 행을 제거하고 싶다면, 아래와 같은 명령어를 사용할 수 있습니다:

sed '/^$/d' filename

위 명령어는 아무 내용이 없는 공백 행을 삭제합니다.

3. 다수의 명령어 연속으로 사용할 때

여러 개의 sed 명령어를 한 번에 실행하고 싶다면, ‘-e’ 옵션을 사용할 수 있습니다:

sed -e 's/old_text/new_text/g' -e '/pattern/d' filename

이 명령은 파일에서 ‘old_text’를 ‘new_text’로 바꾸고, ‘pattern’이 포함된 행은 삭제합니다.

4. 파일에서 첫 번째 및 마지막 문자 삭제하기

특정 파일에서 각 행의 첫 세 글자와 마지막 세 글자를 삭제하고 싶다면, 다음과 같은 명령어를 사용할 수 있습니다:

sed 's/^...//' filename
sed 's/...$//' filename

이 명령어들은 각각 첫 세 글자와 마지막 세 글자를 삭제합니다.

5. 정규 표현식 활용하기

sed는 정규 표현식을 지원하여 더욱 세밀한 검색 및 변경이 가능합니다. 예를 들어, 숫자로 시작하는 행만 출력하고 싶다면 다음과 같이 사용할 수 있습니다:

sed -n '/^[0-9]/p' filename

이 명령어는 숫자로 시작하는 모든 행을 출력합니다.

결론

이번 포스트에서 소개한 sed 명령어는 text 파일을 효율적으로 편집하는 데 큰 도움을 줄 수 있습니다. 다양한 기능과 사용법을 숙지하면, 일상적인 텍스트 처리를 훨씬 수월하게 수행할 수 있습니다. sed는 특히 대량의 파일과 데이터를 처리할 때 그 진가를 발휘하므로, 자주 사용해보시길 추천드립니다.

질문 FAQ

sed 명령어는 무엇인가요?

sed는 스트림 편집기로, 파일 내 텍스트를 조작하고 변형하는 데 강력한 도구입니다. 주로 패턴 검색과 변경 작업을 자동으로 수행하는 데 사용됩니다.

특정 문자열을 대체하는 방법은 어떻게 되나요?

특정 단어를 다른 단어로 변경하고자 할 때는 ‘s/old_text/new_text/’ 구문을 사용하며, 모든 발생을 변경하려면 ‘g’ 플래그를 추가하면 됩니다.

행 삭제는 어떻게 하나요?

특정 패턴이 포함된 행을 지우고 싶다면 ‘/pattern/d’ 명령어를 사용하거나, 특정 범위의 행을 삭제하려면 ‘번호,번호d’ 형식을 이용하면 됩니다.

파일 내용을 직접 수정하려면 어떻게 해야 하나요?

원하는 파일의 내용을 직접적으로 변경하고자 할 경우 ‘-i’ 옵션을 추가하여 sed 명령어를 실행하면, 원본 파일이 수정됩니다.

Leave a Comment