1 minute read

ed

  • ed : line editior
  • a : append
  • . & enter : end of editing
  • w : writing
  • q : quit
  • 1i : 1번 행 앞에 insert
  • ,p or %p : print
  • wq : write, quite
  • %s/기존 문자열/변경 문자열/g : 기존 문자열을 변경 문자열로 바꾼다.
  • stream으로 처리하는 기능이 부족 -> sed의 기능 필요
      obo@obo-900X3L:~/Github/happyOBO.github.io$ ed test.c
      > test.c: No such file or directory
      a
      #include <stdio.h>
      .
      w
      > 19
      q
      obo@obo-900X3L:~/Github/happyOBO.github.io$ 
    

    sed

  • text filter로서의 특징
    • 가볍고 빠른 교체 기능 제공
  • 복수의 cmd
    • sed -e 'cmd1' -e 'cmd2' ... input_file [file ...]
    • -n : 결과 행의 출력이 print 관련 명령을 만날 때 출력
    • -e : expression script (1개인 경우는 생략 가능)
  • substitute
    • sed -e 's/root/adminstor/g' /etc/passwd : rootadminstor로 바꾼다. , 여기서 g는 글로벌 옵션으로 한행의 같은 단어가 여러번 나와도 계속해서 교체하라는 뜻!
      cat /etc/passwd |
      sed -n -e '1s/root/administor/g' -e '1,3s/nologin/disabled/g' -e '1,5p' #s 앞에 숫자를 넣으면 범위 연산이 가능하다.
    
    
  • sed cmd
    • a<text> : 선택된 행 뒤에 text 추가
    • c<ch_text> : 선택된 행을 ch_text로 교체
    • d : 선택된 행을 삭제
    • g : 현재 행을 버퍼의 내용으로 삭제
    • r<file> : 파일을 읽어들임
    • s/old/new/func : old를 검색하여 new로 교체
      • func : g(global), p(print), w(write), n(1~512정수)
    • y/old/new : old를 new로 교체, 단, 길이가 같아야한다.
    • = : 현재 입력행의 번호를 표준 출력으로 인쇄
    • !sed_cmd : 패턴에 부합하지 않거나 범위로 지정되지 않은 행에 대해 sed_cmd 수행
    • /REGEX/ : range 선택시 정규 표현식 사용
      sed 'nologin$/cNO_LOGIN_USER' /etc/passwd # nologin 이 있는 행 자체를 NO_LOGIN_USER로 바꿔라
    
      sed 's/ */ /g' infile # 복수의 공백을 1개의 공백으로 치환
      sed '/^$/d' infile # 공백 라인의 제거
    
  • CLI option
    • -r : use extened regular expressions in the script.
    • z : separate lines by NUL
  • BRE vs ERE

      # BRE
      curl -s https://www.naver.com | sed -n "s,<\a\|A\) [^<>]\+>\(.\+\)</\1>,\2,gp" .....
      # ERE
      curl -s https://www.naver.com | sed -r -n "s,(a|A) ]^<>]+>(.+)</\1>,\2,gp" ...
    

what is awk?

  • 공식적으로 패턴 검색과 처리언어라고 정의
    • 독자적인 처리 문법과 언어 구성을 갖추고 있음
    • expr, grep, sed의 모든 기능을 포함하고 있으며, field 처리 가능
    • grep, sed로 처리가 불가능하다면 awk 사용을 검토!
  • 텍스트 처리를할 때 사용한다.

BEGIN, End

BEGIN {print "Pi (numerical integration method)" }

END

built-in

Categories:

Updated: