awk 학습 노트 (16) - 문자열 함수

다음 표 는 awk 가 지원 하 는 문자열 처리 함수 입 니 다:
함수.
설명 하 다.
gsub( Ere, Repl, [ In ] )
정규 표현 식 의 모든 구체 적 인 값 이 대 체 된 점 을 제외 하고 sub 함수 와 똑 같이 실 행 됩 니 다.
sub( Ere, Repl, [ In ] )
Repl 매개 변수 가 지정 한 문자열 로 In 매개 변수 가 지정 한 문자열 의 Ere 매개 변수 가 지정 한 확장 정규 표현 식 의 첫 번 째 구체 적 인 값 을 대체 합 니 다.sub 함수 가 교 체 된 수량 을 되 돌려 줍 니 다.Repl 매개 변수 가 지정 한 문자열 에 나타 나 는 & (기호 와) 는 In 매개 변수 가 지정 한 Ere 매개 변수 가 지정 한 확장 정규 표현 식 과 일치 하 는 문자열 로 대 체 됩 니 다.In 인자 가 지정 되 지 않 으 면 결 성 된 값 은 전체 기록 ($0 기록 변수) 입 니 다.
index( String1, String2 )
String 1 매개 변수 가 지정 한 문자열 (String 2 가 지정 한 매개 변수 가 있 음) 에서 위 치 를 되 돌려 주 고 1 부터 번 호 를 매 깁 니 다.String 2 인자 가 String 1 인자 에 나타 나 지 않 으 면 0 (0) 을 되 돌려 줍 니 다.
length [(String)]
String 인자 가 지정 한 문자열 의 길이 (문자 형식) 를 되 돌려 줍 니 다.String 인자 가 없 으 면 전체 기록 의 길이 ($0 기록 변수) 를 되 돌려 줍 니 다.
substr( String, M, [ N ] )
N 매개 변수 가 지정 한 문자열 을 되 돌려 줍 니 다.하위 문자열 은 String 매개 변수 가 지정 한 문자열 에서 가 져 옵 니 다. 그 문 자 는 M 매개 변수 가 지정 한 위치 로 시 작 됩 니 다.M 매개 변 수 는 String 매개 변수의 첫 번 째 문 자 를 번호 1 로 지정 합 니 다.N 인자 가 지정 되 지 않 으 면 하위 문자열 의 길 이 는 M 인자 가 지정 한 위치 에서 String 인자 의 끝 에 있 는 길이 입 니 다.
match( String, Ere )
String 매개 변수 가 지정 한 문자열 (Ere 매개 변수 가 지정 한 확장 정규 표현 식 이 나타 납 니 다) 에서 위치 (문자 형식) 를 되 돌려 주 고 1 부터 번 호 를 매기 거나 Ere 매개 변수 가 나타 나 지 않 으 면 0 (0) 으로 되 돌려 줍 니 다.RSTART 특수 변 수 를 반환 값 으로 설정 합 니 다.RLENGTH 특수 변 수 는 일치 하 는 문자열 의 길이 로 설정 하거나 일치 하 는 문자열 을 찾 지 못 하면 - 1 (마이너스 1) 로 설정 합 니 다.
split( String, A, [Ere] )
String 매개 변수 가 지정 한 매개 변 수 를 배열 요소 A [1], A [2],..., A [n] 로 나 누고 n 변수의 값 을 되 돌려 줍 니 다.이 구분 은 Ere 매개 변수 가 지정 한 확장 정규 표현 식 을 통 해 진행 되 거나 현재 필드 구분자 (FS 특수 변수) 로 진행 할 수 있 습 니 다 (Ere 매개 변수 가 없 으 면).문맥 에서 특정한 요 소 를 가리 키 지 않 는 한 숫자 값 이 있어 야 합 니 다. 그렇지 않 으 면 A 배열 의 요 소 는 문자열 값 으로 만 듭 니 다.
tolower( String )
String 인자 가 지정 한 문자열 을 되 돌려 줍 니 다. 문자열 의 모든 대문자 가 소문 자로 변 경 됩 니 다.대문자 와 소문 자의 매 핑 은 현재 언어 환경의 LCCTYPE 범주 정의.
toupper( String )
String 인자 가 지정 한 문자열 을 되 돌려 줍 니 다. 문자열 의 모든 소문 자 는 대문자 로 변 경 됩 니 다.대문자 와 소문 자의 매 핑 은 현재 언어 환경의 LCCTYPE 범주 정의.
sprintf(Format, Expr, Expr, . . . )
Format 매개 변수 가 지정 한 printf 하위 루틴 형식 문자열 에 따라 Expr 매개 변수 가 지정 한 표현 식 을 포맷 하고 마지막 으로 생 성 된 문자열 을 되 돌려 줍 니 다.
다음은 예 를 들 어 설명 한다.
1.gsub/sub
gsub 와 sub 의 차 이 는 전 자 는 모든 문 자 를 교체 하고 후 자 는 하나만 교체 하 는 데 있다. 이 점 은 php 의 preg 와 비슷 하 다.match_all 과 pregmatch:

  
  
  
  
  1. awk 'BEGIN{info="Hello 2012 11!";gsub(/[0-9]+/,"",info);print info}' 

출력:

  
  
  
  
  1. Hello  ! 

설명:
프로그램 은 모든 1 개 이상 의 숫자 를 비 워 두 기 때문에 남 은 것 은 문자, 빈 칸, 느낌표 뿐 입 니 다.
다음은 gsub 을 sub 로 바 꾼 후의 결 과 를 살 펴 보 겠 습 니 다.

  
  
  
  
  1. awk 'BEGIN{info="Hello 2012 11!";sub(/[0-9]+/,"",info);print info}' 

출력:

  
  
  
  
  1. Hello  11! 

설명:
위 에서 보 듯 이 첫 번 째 숫자 만 바 뀌 었 다.
2.index
문자 에서 처음으로 하위 문자열 이 나타 난 위 치 를 찾 습 니 다.

  
  
  
  
  1. awk 'BEGIN{info="Hello 2012 11!";print index(info, 11);}' 

출력:

  
  
  
  
  1. 12 

설명:
index 는 찾 은 문자열 의 출현 위 치 를 되 돌려 줍 니 다. 위 치 는 1 부터 이 며, 찾 지 못 하면 0 으로 돌아 갑 니 다.
3.length
문자열 이나 배열 길 이 를 가 져 옵 니 다.

  
  
  
  
  1. awk 'BEGIN{info="Hello  2012 11!";print length(info);}' 

출력:

  
  
  
  
  1. 20

설명:
length 함수 가 문자열 의 길 이 를 되 돌려 줍 니 다.중국어 가 세 개의 바이트 를 차지 하 는 것 을 볼 수 있다.
4.substr
문자열 캡 처

  
  
  
  
  1. awk 'BEGIN{info="Hello  2012 11!";print substr(info,7,6);}' 

출력:

  
  
  
  
  1.  

설명:
7 번 위치 부터 6 자 를 뒤로 자 르 기 시 작 했 습 니 다. 주의해 야 할 것 은 다 중 바이트 문자 에 대해 서 는 어 지 러 운 코드 를 자 르 기 쉬 우 니 조심 하 세 요!이것 은 php 의 substr 와 유사 하지만 역방향 캡 처 는 지원 되 지 않 습 니 다.
5.match
일치 하 는 문자열 에 사용 합 니 다. 찾 을 수 있 으 면 그 위 치 를 되 돌려 줍 니 다. index 와 유사 합 니 다.

  
  
  
  
  1. awk 'BEGIN{info="Hello 2012 11!";print match(info,/2/);}'  

출력:

  
  
  
  

설명:
match 는 정규 검색 을 지원 합 니 다. index 는 문자열 검색 만 지원 합 니 다. match 기능 이 더 강 합 니 다.
6.split
문자열 구분

  
  
  
  
  1. awk 'BEGIN{info="Hello 2012 11!";split(info, A);n=length(A);for(i=1;i<=n;i++) print A[i];}' 

출력:

  
  
  
  
  1. Hello 
  2. 2012 
  3. 11! 

설명:
split 는 구분자 가 지정 되 지 않 았 을 때 기본 필드 구분자 로 문자열 을 나 누 었 습 니 다. 절 분 된 데 이 터 는 A 배열 에 저장 되 었 습 니 다. length 는 배열 의 길 이 를 얻 었 고 1 부터 n 까지 순환 하여 모든 배열 요 소 를 출력 합 니 다.
7.tolower/toupper
문자열 대소 문자 변환 함수

  
  
  
  
  1. awk 'BEGIN{info="Hello 2012 11!";print tolower(info);print toupper(info);}' 

출력:

  
  
  
  
  1. hello 2012 11! 
  2. HELLO 2012 11! 

설명:
tolower 는 문 자 를 모두 소문 자로 바 꾸 고, toupper 는 문 자 를 모두 대문자 로 바 꿉 니 다. 이것 은 php 의 strtolower 와 strtoupper 와 비슷 합 니 다.
8.sprintf/printf
sprintf 는 문자열 을 포맷 하고 결 과 를 되 돌려 줍 니 다. printf 는 출력 문자열 을 포맷 합 니 다.

  
  
  
  
  1. awk 'BEGIN{str=sprintf("%d %s", 32, "years old");printf("%.2f
    ", 3.1415926);print str;}'
     

출력:

  
  
  
  
  1. 3.14 
  2. 32 years old 

설명:
% d 정형,% s 문자열,%. 2f 는 소수점 뒤의 두 자리 부동 소수점 까지 정확 합 니 다. printf 는 직접 출력 합 니 다. sprintf 처리 후 결 과 를 str 에 저장 하고 print 로 str 를 출력 합 니 다.

좋은 웹페이지 즐겨찾기