[bash: sed] 특정한 문자열이 포함된 행 삭제하기 리눅스 bash script

텍스트 파일에서 특정한 문자열이 포함된 행을 삭제하고 싶을 경우, sed에서 간단하게 작업이 가능하다. 삭제하고자 하는 문자열을 "/문자열/d" 형태로 지정해 주면 된다. 아래의 예시를 보자.

# my_data.txt 파일에서 "abcdefg"가 포함된 행을 제거하고 화면에 출력
sed '/abcdefg/d' my_data.txt

위의 명령을 실행하면 my_data.txt 파일에서 문자열 "abcdefg"가 있는 행을 제거한 후 화면에 결과를 출력한다. 파일 자체를 수정하여 저장하고 싶다면 -i 옵션을 추가하자. (-i 옵션에 대한 내용은 이전 게시물을 참고하자. 여기로)

# my_data.txt 파일에서 "abcdefg"가 포함된 행을 삭제하고 저장
sed -i '/abcdefg/d' my_data.txt

sed 활용에 대한 다른 게시물은 여기로



덧글

  • 좋은하루 2017/02/11 22:54 # 답글

    리눅스는 어렵네요 ^^;;
  • 반달가면 2017/02/13 11:18 #

    처음에는 좀 어렵습니다만, 어느 정도 익숙해진 후에는 엄청나게 편리합니다.
  • 바죠 2017/02/13 09:32 # 삭제 답글

    좋은 명령어들 많이 배우고 있습니다.

    인터넷, 스택오버플로우를 찾아 보았습니다.

    grep -v abcd file >file1
    처럼 하시면 file에 포함된 abcd 를 제거한 모든 라인들을 새로운 파일 file1 에 받을 수 있습니다.

    awk 명령어는 다음과 같습니다.
    awk '!/abcd/{print}' file > file1

  • 반달가면 2017/02/13 11:18 #

    문자열을 제거한 후에 그 결과를 새로운 파일에 저장하고자 할 때는 grep이나 sed나 별 차이가 없겠습니다만, 해당 파일 자체를 갱신해야 할 경우에는 sed에 -i 옵션을 쓰는 것이 더 편리합니다. 상황에 따라 골라서 쓰시면 되겠습니다.
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

314504
5926
1268063

ad_widget_2