awk 스 크 립 트 정렬
4740 단어 awk
awk 배열 때문에 관련 배열 입 니 다.for... in 순환 출력 시 기본 출력 은 무질서 한 배열 입 니 다.
[chengmo@localhost ~]$ awk 'BEGIN{info = "this is a test";split(info,tA," ");for(k in tA){print k,tA[k];}}'4 test1 this2 is3 a
순서대로 출력 해 야 한다 면 키 포 지 셔 닝 방식 으로 출력 합 니 다.
[chengmo@localhost ~]$ awk 'BEGIN{info = "this is a test";slen=split(info,tA," ");for(i=1;i<=slen;i++){print i,tA[i];}}' 1 this2 is3 a4 test
1. 내 장 된 함수 (asort, asorti 사용) awk 3.1 이상 버 전 지원
asort 사용 설명 srcarlen = asort [srcarr, dscarr] 의 기본 반환 값 은: 원래 배열 의 길이 이 고, 매개 변수 dscarr 에 들 어 오 면 정렬 후 배열 의 값 을 dscarr 에 부여 합 니 다.
[chengmo@localhost ~]$ awk 'BEGIN{a[100]=100;a[2]=224;a[3]=34;slen=asort(a,tA);for(i=1;i<=slen;i++){print i,tA[i];}}'1 342 1003 224
asort 는 값 만 정렬 했 기 때문에 원래 키 값 을 잃 어 버 렸 습 니 다.
2, asorti 사용 설명
[chengmo@localhost ~]$ awk 'BEGIN{a["d"]=100;a["a"]=224;a["c"]=34;slen=asorti(a,tA);for(i=1;i<=slen;i++){print i,tA[i],a[tA[i]];}}'1 a 2242 c 343 d 100
asorti 는 키 값 을 정렬 (문자열 형식) 하고 새로운 배열 을 생 성하 여: tA 에 넣 습 니 다.
2. 파 이 프 를 통 해 sort 정렬 으로 보 내기
[chengmo@localhost ~]$awk 'BEGIN{a[100]=100;a[2]=224;a[3]=34;for(i in a){print i,a[i] | "sort -r -n -k2";}}'2 224100 1003 34
파 이 프 를 통 해 외부 프로그램 'sort' 로 정렬 합 니 다. - r 는 큰 것 부터 작은 것 까지, - n 은 숫자 에 따라 정렬 합 니 다. - k2 는 두 번 째 열 로 정렬 합 니 다. 데 이 터 를 제3자 에 게 던 지 는 sort 명령 을 통 해 모든 문제 가 간단 해 집 니 다. key 값 으로 정렬 하면 - k2 는 - k1 로 바 뀌 면 됩 니 다.
[chengmo@localhost ~]$ awk 'BEGIN{a[100]=100;a[2]=224;a[3]=34;for(i in a){print i,a[i] | "sort -r -n -k1";}}'100 1003 342 224
3. 사용자 정의 정렬 함수
awk 사용자 정의 함수 구조: function funname(p1,p2,p3)
{
staction;
return value;
}
이상 은 awk 사용자 정의 함수 표시 방식 입 니 다. 기본 입력 매개 변 수 는 참조 방식 으로 들 어 옵 니 다. return 값 은 문자 형 이나 수치 형 만 있 을 수 있 습 니 다. 배열 형식 으로 돌아 갈 수 없습니다. 배열 형식 으로 돌아 갈 경우, 인삼 방식 으로 들 어 와 야 합 니 다. 다시 얻 을 수 있 습 니 다.
awk 반환 배열 형식
awk 'function test(ary){
for(i=0;i<10;i++){
ary[i]=i;
}
return i;
}
BEGIN{
n=test(array);
for(i=0;i<n;i++){
print array[i];
}
}
'
정렬 함수 \ # arr 1 차원 배열 에 들 어 갑 니 다 \ # key 정렬 유형 1 은 값 에 따라 정렬 합 니 다.= a 구분자 100, 그리고 아래 표 시 된 대로 내용 을 재 귀적 으로 표시 합 니 다. 이 정렬 은 거품 방식 으로 진행 합 니 다. function sortArr(arr,key,datatype,tarr,splitseq){ if(key ~ /[^1-2]/) {return tarr;} for(k in arr) { tarr[++alen]=(k""splitseq""arr[k]); } for(m=1;m<=alen;m++) { for(n=1;n<=alen-m-1;n++) { split(tarr[m],tm,splitseq); split(tarr[n+1],tn,splitseq); tnum=tarr[m]; if(datatype==1) { if(tm[key]+0
전체 코드 는 다음 과 같 습 니 다:
[chengmo@centos5 ~]$ awk 'BEGIN{a["a"]=100;a["b"]=110;a["c"]=10;splitseq="%%";alen=sortArr(a,2,1,tarr,splitseq);for(m=1;m<=alen;m++){ split(tarr[m],ta,splitseq); print m,ta[1],ta[2];}}function sortArr(arr,key,datatype,tarr,splitseq){ if(key ~ /[^1-2]/) {return tarr;} for(k in arr) { tarr[++alen]=(k""splitseq""arr[k]); } for(m=1;m<=alen;m++) { for(n=1;n<=alen-m-1;n++) { split(tarr[m],tm,splitseq); split(tarr[n+1],tn,splitseq); tnum=tarr[m]; if(datatype==1) { if(tm[key]+0
이상 은 awk 배열 정렬 방법 입 니 다. 소량의 데이터 정렬 은 성능 에 있어 서 사용자 정의 함수 성능 이 높 습 니 다. 프로 세 스 를 따로 시작 할 필요 가 없습니다. 대량의 데이터 에 대해 서 는 두 번 째 방법 을 정렬 하 는 것 이 좋 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[fish] awk의 스크립트 부분을 히스토리에서 보완awk 의 사용법이 우울한 기억으로, 그렇다면 어떻게 할까? 다시 검색하는 것이 많았기 때문에 어떻게든하고 싶다. peco 그리고 과거의 awk 이력을 찾는 것도 있지만, fish 그래서 보완으로 해결할 수 있으면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.