Shell-awk

7945 단어 Shell
글 목록
  • 1. AWK
  • 1. 기초 지식
  • 2. awk 에서 흔히 볼 수 있 는 내장 변수
  • 3. awk 표준 옵션
  • 4. awk 조건 판단 (& |!)
  • 5. awk 순환
  • 6. awk 실행 절차
  • 7. 작은 안건
  • 1. AWK
    1. 기초 지식
  • print $0 의 의 미 는 줄 전 체 를 인쇄 하여 stdout 에 출력 하 는 것 입 니 다.
  • - F 매개 변 수 는 awk 초기 화 변수 FS 를 설정 합 니 다.FS 변 수 는 awk 필드 구분 자 를 제어 합 니 다. 기본적으로 공백 문자 입 니 다.
  • BEGIN 코드 블록 에서 awk 부분 매개 변 수 를 초기 화 합 니 다.END 코드 블록 은 모든 입력 이 처 리 된 후에 awk 가 실행 하 는 코드 입 니 다.
  • awk 의 변 수 는 만 들 때 초기 값 이 빈 문자열 이지 만 수치 가 필요 할 때 0 으로 간 주 됩 니 다.
  • awk 는 배열 이름 뒤에 임의의 숫자 나 문자열 표현 식 을 괄호 로 묶 어 색인 으로 사용 할 수 있 습 니 다.
  • 배열 도 성명 없 이 사용 할 수 있다.배열 의 저장 공간 은 새로운 요 소 를 참조 할 때 자동 으로 증가 합 니 다.
  • delete array [index] 는 배열 에서 요 소 를 삭제 하고 delete array 는 array 배열 의 모든 요 소 를 삭제 합 니 다.
  • awk 에 서 는 print 만 사용 할 수 있 습 니 다.echo 를 사용 할 수 없습니다.
  • awk 에서 사용 하 는 변 수 는 필요 하지 않 습 니 다. $var 참조 변 수 를 사용 합 니 다.직접 사용 var 하면 값 을 얻 을 수 있 습 니 다.
  • awk 핵심 코드 블록 의 실행 횟수 와 작업 파일 의 줄 수가 일치 합 니 다.BEGIN 과 END 는 한 번 만 수행 합 니 다
  • 2. awk 에서 흔히 볼 수 있 는 내장 변수
    변량
    묘사 하 다.
    FILENAME
    현재 입력 한 파일 의 이름
    FNR
    현재 입력 파일 의 기록 수
    FS
    파일 구분자 (기본 값 은 빈 칸, 정규 표현 식 지원)
    NF
    현재 기 록 된 필드 수
    NR
    작업 중 기록 수
    OFS
    출력 필드 분할 문자
    ORS
    출력 기록 분할 문자 (기본 값 은 ")
    RS
    입력 레코드 분할 문자
    ARGC
    들 어 오 는 매개 변수 개수 eg: awk 'BEGIN{print "Args=", ARGC}' 1 2 343 4ARGV
    들 어 오 는 인자 eg: awk 'BEGIN{print "Argv1=", ARGV[1]}' 1 2 343 4;ARGV [0] 는 awk 입 니 다.ARGV [1] 부터 시작 하 는 것 이 매개 변수 다.
    3. awk 표준 옵션
    옵션
    묘사 하 다.
    예시
    -v
    이 옵션 은 프로그램 이 시작 되 기 전에 값 을 부여 합 니 다.awk -v name1=alex 'BEGIN{printf "name=%s
    ", name1}'

    4. awk 조건 판단 (& |!)
      if (condition1 && condition2) {
         statement...
      } else if (condition1 || condition2) {
         statement...
      } else {
       statement...
     }
    

    5. awk 순환
  • while 순환
  • BEGIN {
      print "while is begin...."
    }
    
    {
        item=1
        while( item < 10 ) {
         item+=item
        }
    }
    
    END {
      print "while is end, item : " item
    }
    
  • do... while 순환
  • {
     count=1
    
     do {
      print "count: " count++
     } while(count != 10)
    }
    
  • for circle
  • BEGIN{
     print "This is begin..."
    }
    
    {
       for(i=1; i<=10; i++) {
         print "item: " i
       }
    }
    
    END {
      print "This is end..."
    }
    

    6. awk 실행 절차
    Created with Rapha ë l 2.2.0 awk - BEGIN 코드 블록 읽 기 파일 한 줄 데이터 실행 awk 코드 블록 읽 기 파일 에 남 은 줄 이 있 습 니까?awk - END 코드 블록 yes no
    7. 소 안 열
  • 파일 구분자 설정.
  • awk –F ":" '{print "USER: "$1 "\t SHELL: "$7}'  /tmp/passwd.piece
    
  • 설정 한 구분자 가 정규 표현 식
  • 입 니 다.
    awk -F "[\t ]+" '{print "DEVICE: "$1 "\t FSTYPE: "$3}' /etc/fstab
    
  • 정규 표현 식 에 부합 할 때 스 크 립 트 실행
  • awk  '/nologin/ {++adder}' num1.txt
    
  • 사용 조건 판단
  • awk '{if ($1>100){count++; print $1} \
    else{count--;print $2}}' num2.txt
    
  • awk 스 크 립 트 를 사용 하여 대량의 awk 명령 을 실행 하고 파일 을 조작 합 니 다.
  • num1.awk
    BEGIN{
      FS=":"
      print "This is begin!"
    }
    
    {
      if($1>100 && $1<200) {
         print $1 " is more than 100"
      } else if($1>200) {
         print $1" is more than 200"
      } else {
         less_than_100++
         print $1 " is less than 100" 
      }
    }
    
    END{
      print "Less than 100, count: " less_than_100
    }
    
    awk -f num1.awk num1.txt 
    

    좋은 웹페이지 즐겨찾기