SHELL 프로 그래 밍 (3) sed 와 awk 의 용법

10730 단어 shell
  • 1.sed
  • 1.1 sed 의 역할
  • 1.2 파일 의 n 번 째 줄 표시
  • 1.3 파일 앞 n 줄 보이 기
  • 1.3 이전 n 줄 이외 의 내용 표시
  • 1.4 파일 n 번 째 와 그 다음 m 줄 표시
  • 1.5 n 번 째 줄 앞 에 내용 삽입
  • 1.6 파일 을 교체 하 는 n 번 째 줄
  • 1.7 파일 의 마지막 줄 에 삽입
  • 1.8 복사 붙 여 넣 기
  • 1.9 빈 줄 삭제
  • 1.10 찾기 및 저장
  • 1.11 파일 리 셋
  • 2.awk
  • 2.1 안내
  • 2.2 사용자 정의 연 월 일 표시
  • 2.3 awk 파일 작업
  • 2.4 여러 조건 판단

  • 1.sed
    1.1 sed 의 역할
    sed 는 strea editor 의 약칭 으로 온라인 편집기 입 니 다. 한 줄 의 내용 을 처리 할 때마다 현재 처 리 된 줄 을 모드 공간 (버퍼) 에 저장 합 니 다. 이 어 sed 명령 으로 버퍼 의 내용 을 처리 하고 처리 한 후에 버퍼 의 내용 을 화면 으로 보 내 고 다음 줄 을 처리 합 니 다. 이렇게 파일 이 끝 날 때 까지 계속 반복 합 니 다.파일 의 내용 이 변경 되 지 않 았 습 니 다. 저장 소 로 출력 하지 않 는 한 변경 되 지 않 았 습 니 다.
    sed 는 주로 하나 이상 의 파일 을 자동 으로 편집 하고 파일 에 대한 반복 작업 을 간소화 합 니 다.
    문법:
    sed [options] '[command]' [filename]

    options: - n: 다음 줄 읽 기 - e: 여러 sed 명령 실행 - f: 실행 스 크 립 트 - i: 파일 내용 편집 - i. bak: 편집 과 동시에. bake 의 백업 - r: 확장 정규 표현 식 사용
    command: a: 뒤에 i 추가: 일치 한 후에 p 삽입: 인쇄 d: r/R 삭제: 파일 읽 기, 한 줄 읽 기 w: 다른 저장 s: 찾기 c: 대체 h/H: 복사/추가 버퍼 에서 저장 공간 g/G: 저장 공간 에서 가 져 오기/추가 버퍼 x: 두 공간 내용 교환 n/N: 복사,현재 D 에 다음 줄 추가: 이전 내용 삭제 P: 인쇄 전 내용 b: 무조건 점프 t: 일치 하 는 점프 T 만족: 일치 하지 않 을 때 점프
    1.2 파일 의 n 번 째 줄 보이 기
    sed -n "np" filename #n       

    예 를 들 어 file. txt 의 세 번 째 줄 을 표시 합 니 다.
    sed -n "3p" file.txt 

    1.3 파일 앞 n 줄 보이 기
    sed -n "1,np" filename

    예 를 들 어 file. txt 의 앞 세 줄 을 표시 합 니 다.
    sed -n "1,3p" file.txt

    1.3 이전 n 줄 이외 의 내용 표시
    sed -n '1,n! p' filename

    예 를 들 어 file. txt 에서 앞의 세 줄 을 제외 한 의외 의 내용 을 표시 합 니 다.
    sed -n "1,3! p" file.txt

    1.4 파일 n 번 째 줄 과 그 다음 m 줄 보이 기
    sed -n "n,-mp" filename

    예 를 들 어 파일 의 세 번 째 줄 과 세 번 째 줄 뒤의 네 줄 을 표시 합 니 다.
    sed -n "3,+4p" file.txt 

    1.5 n 번 째 줄 앞 에 내용 삽입
    명령:
    sed "n i content " filename

    예 를 들 어 file. txt 의 세 번 째 줄 에 문자열 'abc' 를 삽입 합 니 다.
    sed "3 i abc" file.txt 

    1.6 파일 의 n 번 째 줄 바 꾸 기
    명령:
    sed 'n c content' filename

    예 를 들 어 파일 의 세 번 째 줄 을 abc 로 바 꿉 니 다.
    sed '3 c abc' file.txt 

    1.7 파일 의 마지막 줄 에 삽입
    sed "$ a content" filename

    예 를 들 어 file. txt 의 마지막 줄 에 문자열 'abc' 를 삽입 합 니 다.
    sed " $ a abc " file.txt 

    1.8 복사 붙 여 넣 기
    예 를 들 어 파일 의 두 번 째 줄 에서 네 번 째 줄 로 복사 하여 파일 의 열 번 째 줄 에 붙 여 넣 습 니 다.
    sed "2,4H; 10G" file.txt 

    파일 의 두 번 째 줄 에서 네 번 째 줄 로 복사 하여 파일 끝 에 붙 여 넣 기:
    sed "2,4H; $G" file.txt 

    1.9 빈 줄 삭제
    sed '/^$/d' a.txt > b.txt

    1.10 찾기 및 저장
    특정 문 자 를 포함 하 는 줄 을 찾 아 저장 합 니 다. 예 를 들 어 '5' 가 있 는 줄 을 찾 아 new. txt 에 저장 합 니 다.
    sed '/5/ w new.txt' file.txt

    1.11 파일 재 설정
    sed 는 파일 의 내용 을 바 꾸 지 않 습 니 다. 편집 한 내용 을 유지 하려 면 방향 을 바 꾸 십시오.예 를 들 어 file. txt 의 세 번 째 줄 과 세 번 째 줄 뒤의 네 줄 을 인쇄 하고 a. txt 에 출력 합 니 다.
    sed -n '3,+4p' file.txt >a.txt

    2.awk
    2.1 소개
    awk 는 우수한 텍스트 처리 도구 로 Linux 및 Unix 환경 에서 기능 이 가장 강 한 데이터 처리 엔진 중 하나 입 니 다.그 기능 은 한 사람 이 가 진 지식 에 달 려 있다.
    awk 의 문 구 는 모두 패턴 과 동작 으로 구성 되 어 있 으 며, 하나의 awk 스 크 립 트 는 여러 개의 문 구 를 가 질 수 있 으 며, 패턴 은 동작 문장의 트리거 조건 과 트리거 시간 을 결정 합 니 다.
    특수 필드;BEGIN 문 구 는 머리 정 보 를 계산 하고 인쇄 하 며 모든 동작 전에 진행 합 니 다.END 문 구 는 출력 결 과 를 집계 하고 동작 후에 실행 합 니 다.기본 구분자 가 빈 칸 이 고 - F 를 사용 하여 다른 구분자 로 바 꿀 수도 있 습 니 다. 예 를 들 어 콜론 분할: - F:
    2.2 사용자 정의 디 스 플레이 연월일
    [root@iz2zeisjfk2rw89yhp3g19z shtest]# date
    Tue May  1 18:42:41 CST 2018
    [root@iz2zeisjfk2rw89yhp3g19z shtest]# date | awk '{print "Year:"$6 "\t Month:"$2 "\tday:" $3}'
    Year:2018    Month:May  day:1

    2.3 awk 파일 작업
    다음 내용 을 result. txt 에 기록 합 니 다:
    andy 4 85 92 78 94 88
    bob 6 89 90 75 90 86
    claire 9 84 88 80 92 84
    dave 5 94 52 84 86 NA
    $0 모든 내용 을 표시 합 니 다. $1 첫 번 째 열 을 표시 합 니 다.
    [root@iz2zeisjfk2rw89yhp3g19z shtest]# awk '{print $0}' result.txt 
    andy 4 85 92 78 94 88
    bob 6 89 90 75 90 86
    claire 9 84 88 80 92 84
    dave 5 94 52 84 86 NA
    [root@iz2zeisjfk2rw89yhp3g19z shtest]# awk '{print $1}' result.txt 
    andy
    bob
    claire
    dave

    result. txt 의 첫 번 째 열 과 세 번 째 열 을 표시 합 니 다.
    awk '{print $1,$3}' result.txt 

    파일 헤더 와 파일 끝 인쇄:
    awk 'BEGIN{print "name  level result"}{print $1,$2,$3} END{print "end of the file"}' result.txt 

    결과:
    [root@iz2zeisjfk2rw89yhp3g19z shtest]# awk '$2 >= 5' result.txt 
    bob 6 89 90 75 90 86
    claire 9 84 88 80 92 84
    dave 5 94 52 84 86 NA

    콜론 을 구분자 로 하여/etc/passwd 의 첫 번 째 열 을 인쇄 합 니 다.
    awk -F":" '{ print $1 }' /etc/passwd

    2.4 여러 조건 판단
    또는 조건:
    awk '{if($1=="andy" || $2=="9")  print $0}' result.txt 

    조건:
    awk '{if($1=="andy" && $2=="9")  print $0}' result.txt 

    좋은 웹페이지 즐겨찾기