AWK 텍스트 처리 도구 (Linux)

6343 단어 linux
AWK 텍스트 처리 도구 (Linux)
PS: 실습 을 시작 하 자마자 백만 급 데 이 터 를 처리 하 는 임 무 를 주 었 습 니 다. 예전 에 SHELL 의 일부 것들 을 sed/awk 와 같은 처 리 를 배 웠 지만 구체 적 인 응용 도 하지 않 았 습 니 다. 10 몇 줄 10 몇 열 에 있 는 작은 데이터 로 조작 한 적 이 있 기 때문에 새로운 학습 을 통 해 실제 업무 에 응용 해 야 합 니 다.너 는 엑셀 로 편집 할 수 있어. 괜찮아, 저장 하면 끊 겨!
AWK 가 뭐야?
awk 가 뭐 예요?다른 대부분의 유 닉 스 명령 과 달리 이름 으로 볼 때 우 리 는 awk 의 기능 을 알 수 없다. awk 는 세 사람의 이름 의 줄 임 말 이기 때문이다. 그들 은 Aho, (Peter) Weinberg 와 (Brain) Kernighan 이다.바로 이 세 사람 이 awk - 우수한 스타일 스 캔 과 처리 도 구 를 만 들 었 습 니 다.
AWK 사용법
awk 언어의 가장 기본 적 인 기능 은 파일 이나 문자열 에서 지정 한 규칙 을 바탕 으로 정 보 를 탐색 하고 추출 하 는 것 입 니 다.
awk 를 호출 할 수 있 는 세 가지 방법 이 있 습 니 다.
  • 명령 행 방식
  • 모든 awk 명령 을 파일 에 삽입 하고 chmod 를 이용 하여 awk 파일 을 실행 - f scripts. awk
  • 모든 awk 명령 을 단독 파일 에 삽입 하고 호출 합 니 다. #!/bin/awk -f

  • 구체 적 인 사용법
    1. awk 출력 저장
    my file 파일 에서 nwefile 파일 에 저 장 된 $0 은 모든 내용 을 표시 합 니 다.
     awk '{print $0}'  myfile>newfile

    2. tee 를 사용 하여 파일 로 출력 하 는 동시에 화면 으로 출력 (파이프 '|' 이용)
     awk '{print $0}' myfile |tee newfile

    3. awk 일반적인 문법 형식
    awk [-Field-separator] 'commands' input-file(s)
    
    awk -f awk-script-file input-file

    4. awk 스 크 립 트 의 일반적인 형식
    #awk-script-file.awk
    BEGIN {FS=","} 
    {
        print $1
    } 
    END {print "FINISH"}

    그 중에서 FS 는 명령 행 의 - F 와 같은 것 으로 구분자 설정 에 사용 되 며, SCV 파일 을 처리 할 때 ","구분자 로 사용 해 야 합 니 다.
    AWK 내장 함수
    awk 가 우수한 프로 그래 밍 언어 가 된 이유 중 하 나 는 우수한 프로 그래 밍 언어 언어의 많은 장점 을 흡수 한 것 이다.이러한 장점 중 하 나 는 내 장 된 함수 의 사용 입 니 다. awk 는 일련의 내 장 된 함 수 를 정의 하고 지원 합 니 다. 이러한 함수 의 사용 으로 인해 awk 가 제공 하 는 기능 이 더욱 완선 되 고 강력 합 니 다.
    내 장 된 문자열 함수:
    gsub(r,s)           在整个$0中用s替代r
    
    
    awk 'gsub(/name/,"xingming") {print $0}' temp
    
     
    gsub(r,s,t)         在整个t中用s替代r
    
     
    index(s,t)          返回s中字符串t的第一位置,失败返回0
    
    
    awk 'BEGIN {print index("Sunny","ny")}' temp     返回4
    
    
    length(s)           返回s的长度
    
    
    match(s,r)          测试s是否包含匹配r的字符串,失败返回0 也可以使用~/xxx/
    
    
    awk '$1=="J.Lulu" {print match($1,"u")}' temp    返回4
    
    
    split(s,a,fs)       在fs上将s分成序列a
     
    
    awk 'BEGIN {print split("12#345#6789",myarray,"#")"'
    
    
    返回3,同时myarray[1]="12", myarray[2]="345", myarray[3]="6789"
     
    
    sprint(fmt,exp)     返回经fmt格式化后的exp
     
    
    sub(r,s)   从$0中最左边最长的子串中用s代替r(只更换第一遇到的匹配字符串)
    
    
    substr(s,p)         返回字符串s中从p开始的后缀部分
    
    
    substr(s,p,n)       返回字符串s中从p开始长度为n的后缀部分

    2. awk 에서 사용자 정의 문장
    1. if 판단 지원
     if(表达式)
    
        {语句1}
    
     else if(表达式)
    
        {语句2}
    
     else
    
        {语句3}

    2. 순환 지원
    for(变量 in 数组)
    
        {语句}
    for(变量;条件;表达式)
    
        {语句}

    3. while 순환 지원
    while(表达式)
    
        {语句}
    do
    
    {语句}while(条件)

    좋은 웹페이지 즐겨찾기