본문 바로가기

리눅스

sed 명령어를 사용하여 특정 라인을 삭제하거나 패턴을 기반으로 출력하는 방법

반응형

sed 명령어를 사용하여 특정 라인을 삭제하거나 패턴을 기반으로 출력하는 방법(sed 라인 삭제)

sed는 텍스트 스트림을 조작하는 강력한 도구로 파일의 특정 라인이나 패턴을 찾아 수정하거나 삭제할 수 있습니다. 이를 통해 효율적으로 파일을 처리할 수 있습니다.

1. 특정 라인 삭제

파일에서 특정 라인을 삭제하고 바로 원본 파일에 적용합니다.

sed -i 'Nd' 파일이름

여기서 N은 삭제할 라인의 번호이며 파일이름은 수정할 파일의 이름입니다.

 

sed -i '5d' filename.txt는 filename.txt 파일에서 5번째 줄을 삭제합니다.

sed -i '5d' filename.txt

2. 범위 내 여러 줄 삭제

여러 줄을 한 번에 삭제할 때는 시작과 끝 라인을 콤마(,)로 구분하여 삭제할 수 있습니다.

 

filename.txt에서 5번째 줄부터 10번째 줄까지 삭제합니다.

sed -i '5,10d' filename.txt

3. 특정 패턴을 포함하는 라인 삭제

특정 문자열을 포함하는 라인을 삭제하려면 다음 명령을 사용할 수 있습니다.

 

패턴이 포함된 모든 라인이 삭제됩니다.

sed -i '/pattern/d' filename.txt

4. grep과 함께 패턴 검색 및 주변 라인 출력

grep을 사용하여 파일에서 특정 패턴을 검색하고 그 패턴을 중심으로 지정된 수의 앞뒤 라인을 함께 출력할 수 있습니다.

 

패턴 Moral of the story를 포함한 라인과 그 주변 5줄을 출력합니다.

cat -n sedTestFile.txt | grep -C 5 'Moral of the story'
$ cat -n sedTestFile.txt | grep -C 5 'Moral of the story' 
    18
    19  The big bad wolf tried to climb down the chimney, but the third little pig had a big pot of boiling water on the fire. When the big bad wolf fell down the chimney, he fell into the boiling water and died.
    20
    21  The two little pigs were so happy that they invited the third little pig to live with them. They all lived happily ever after.
    22
    23  Moral of the story:
    24
    25  Hard work pays off. The third little pig worked hard to build his house out of bricks, and it paid off when the big bad wolf came.
    26
    27  Don't be lazy. The first two little pigs were lazy, and they paid the price when the big bad wolf came.
    28
728x90

5. 특정 줄만 출력

파일의 일부 줄을 출력하고 싶다면 sed -n과 p 옵션을 사용하여 지정된 줄만 출력할 수 있습니다.

 

sedTestFile.txt 파일에서 23번 줄부터 27번 줄까지 출력합니다.

sed -n '23,27p' sedTestFile.txt
$ sed -n '23,27p' sedTestFile.txt
Moral of the story:

Hard work pays off. The third little pig worked hard to build his house out of bricks, and it paid off when the big bad wolf came.

Don't be lazy. The first two little pigs were lazy, and they paid the price when the big bad wolf came.

6. 특정 줄을 삭제하고 원본 파일에 적용

sedTestFile.txt 파일에서 23번부터 27번 줄을 삭제하고 그 결과를 원본 파일에 적용합니다.

sed -i '23,27d' sedTestFile.txt

7. 백업 파일과 수정된 파일 비교

파일을 수정하기 전 백업을 만들어두고 수정된 파일과 비교하고 싶다면 diff 명령어를 사용할 수 있습니다.

 

백업 파일(sedTestFile.txt.bk)과 수정된 파일을 비교합니다.

diff -Nur sedTestFile.txt.bk sedTestFile.txt
$ diff -Nur sedTestFile.txt.bk sedTestFile.txt                 
--- sedTestFile.txt.bk  2023-11-14 16:21:55.866097959 +0900
+++ sedTestFile.txt     2023-11-14 16:24:01.267953654 +0900
@@ -20,10 +20,5 @@
 
 The two little pigs were so happy that they invited the third little pig to live with them. They all lived happily ever after.
 
-Moral of the story:
-
-Hard work pays off. The third little pig worked hard to build his house out of bricks, and it paid off when the big bad wolf came.
-
-Don't be lazy. The first two little pigs were lazy, and they paid the price when the big bad wolf came.
 
 Be prepared. The third little pig was prepared for the big bad wolf, and he was able to defeat him.

 

sed는 파일의 특정 줄을 삭제하거나 수정하는 강력한 도구입니다. 이를 활용하여 패턴 검색, 줄 삭제, 파일 간 비교 등을 효율적으로 처리할 수 있습니다.

 

728x90
반응형