Study/리눅스

리눅스 7일차(sed)

됵이 2022. 7. 17. 18:42

sed란 

  • 편집에 특화된 명령어다
  • vi/vim은 편집기를 열어서 수정하는 방식 ====sed는 명령행에서 파일을 인자로 받아 명령어를 통해 작업 한 후에 결과를 화면으로 확인 할 수 있다. 
  • 원본을 손상시키지 않는다. (다만 옵션을 통해 원본을 수정할 수 있다)

 

출력

sed -n '1p' ana : 첫번째 라인을 출력하라

sed -n '$p' ana : 마지막 라인을 출력하라

sed -n '1,5p' ana : 1에서5번째 라인을 출력하라

 

변경

sed -n 's/cdrom/CDROM/p' ana : 표준 출력에만 cdrom을 대문자로 바꿔서 출력

sed -i 's/cdrom/CDROM/p' ana : 원본에서 cdrom을 대문자로 바꿔라

 

ex)

sed -n 's/#//p' ana > ana1 -> 주석으로 되있는 것들만 지워서 파일로 저장

 

sed -n 's/^/#/p' ana ->모든 라인 주석 처리 하기

 

sed -n 's/^[!#]*/#/p' ana -> 이미 주석 처리가 되어있는 것은 제외

 

cat -n ana | sed -n '1~2p' | more -1 => 1번 부터 2스탭씩 출력해라 (홀수라인만 출력

 

cat -n ana | sed -n '0~2p' | more -1 => 0번 부터 2스탭씩 출력해라 (짝수라인만 출력

※p대신 d로 하면 삭제

 

옵션

※sed는 기본적으로 출력을 한다.

  • p : 출력
    • sed '/hi/p' test.txt => test 파일에서 hi 를 출력하고 한번더 출력
  • d : 삭제
    • sed '3d' test..txt => test 파일에서 3번째 줄을 삭제하고 나머지 출력
    • sed '3, $d' test..txt => test 파일에서 3번째 줄부터 끝까지 삭제하고 나머지 출력 
  • s : 치환
    • sed 's/abc/cba/g' test.txt. => abc라는 문자를 찾아서 cba로 치환 g는 글로벌로 전체
    • sed 's/abc/cba/p' test.txt =>  abc라는 문자를 찾아서 cba로 치환 하고 그 줄만 출력
  • , : 범위 지정
    • sed -n '/a/,/b/p' test.txt => a와 b 사이의 패턴 범위에 있는 모든 줄을 출력
    • sed -n '5,/^abc/p' test.txt => test 파일에서 5번째 줄부터 abc로 시작하는 첫번째 줄 까지 출력
  • e : 다중편집
    • sed -e '1,3d' ?e 's/#//' test.txt =>1에서 3번째 줄 삭제하고 주석(#) 삭제하고 출력
  • r : 파일에서 읽기
  • w : 파일에 쓰기
  • a : 추가
  • i : 삽입 
  • c : 변경
  • n : 다음
  • y : 변환
  • q : 종료
  • h, g : 보류와 얻기
  • h, x : 보류와 교체

 

알아둘 것 

셔뱅이란

운영체제 입장에서는 스크립트 파일이 어떤 문법으로 짜여진건지 모른다. 

이걸 알려주기 위해 스크립트 첫줄에 #!/bin/bash 라고 작성해준다. 

bash말고도 파이썬 php 등으로 적어주면 해당 문법으로 읽어드린다.

'Study > 리눅스' 카테고리의 다른 글

리눅스 9일차(보안)  (0) 2022.07.17
리눅스 8일차(사용자 계정 관리)  (0) 2022.07.17
리눅스 6일차(awk)  (0) 2022.07.17
리눅스 5일차(vi 에디터)  (0) 2022.07.17
리눅스 4일차(방향 재지정 / find)  (0) 2022.07.17