awk 다 중 파일 조작 2 가지 실현 방법
인 스 턴 스 텍스트:
1
2
3
4
5
6
7
8
9
10
11
12
13
[chengmo@centos5 shell]$ awk 'FNR==1{print "\r
"FILENAME}{print $0}' a.txt b.txt a.txt 100 wang man 200 wangsan woman 300 wangming man 400 wangzheng man b.txt 100 90 80 200 80 70 300 60 50 400 70 20 결 과 를 병합 해 야 합 니 다:
100 wang man 90 80 200 wangsan woman 80 70 300 wangming man 60 50 400 wangzheng man 70 20
awk 다 중 파일 조작 방법 1: 실현 방향:
외부 명령 을 통 해 파일 을 병합 한 다음 정렬 을 통 해 awk 를 통 해 병합 작업 을 합 니 다.
우선:
1
2
3
4
5
6
7
8
9
[chengmo@centos5 shell]$ cat a.txt b.txt | sort -n -k1 | awk '{print}' 100 90 80 100 wang man 200 80 70 200 wangsan woman 300 60 50 300 wangming man 400 70 20 400 wangzheng man 지금 은 첫 번 째 열 과 같은 처 리 를 한 줄 로 합 쳐 야 합 니 다. 여 기 는 "next"문 구 를 사용 해 야 합 니 다.이 동작 은 awk 다 중 줄 통합 [next 사용 소개] (일반적인 응용 4) 을 참고 할 수 있 습 니 다.
계속:
1
2
3
4
5
[chengmo@centos5 shell]$ cat a.txt b.txt | sort -n -k1 | awk 'NR%2==1{fd1=$2"\t"$3;next}{print $0"\t"fd1}' 100 wang man 90 80 200 wangsan woman 80 70 300 wangming man 60 50 400 wangzheng man 70 20 몇 줄 을 합 쳐 야 합 니 다. 자주 사용 하 는 방법 은 NR% num 입 니 다. 그리고 줄 값 을 저장 합 니 다. next 줄 입 니 다.출력 할 때 출력 합 니 다.
awk 다 중 파일 조작 방법 2 사고의 방향 을 실현 하 다.
세 번 째 도구 로 열지 않 고 awk 를 통 해 여러 파일 을 엽 니 다.그리고: FILENAME 를 통 해 현재 처리 파일 이름 을 얻 을 수 있 습 니 다.NR 총 기록 FNR 현재 파일 기록 및 ARGC 입력 매개 변수 총수, ARGV 는 배열, 각 매개 변수 값 입 니 다.
이 실례 들 을 보십시오.
1
2
3
4
5
6
7
8
9
10
[chengmo@centos5 shell]$ awk 'BEGIN{print ARGC,ARGV[0],ARGV[1],ARGV[2]}{print FILENAME,NR,FNR,$0}' a.txt b.txt 3 awk a.txt b.txt a.txt 1 1 100 wang man a.txt 2 2 200 wangsan woman a.txt 3 3 300 wangming man a.txt 4 4 400 wangzheng man b.txt 5 1 100 90 80 b.txt 6 2 200 80 70 b.txt 7 3 300 60 50 b.txt 8 4 400 70 20 프로그램 코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[chengmo@centos5 shell]$ awk ' BEGIN{ if (ARGC<3) { exit 1; } file = "" ; } { aData[FILENAME,$1]=ARGV[1]==FILENAME?$0:$2 "\t" $3; } END{ for (k in aData) { split (k,idx,SUBSEP); if (idx[1]==ARGV[1] && (ARGV[2],idx[2]) in aData) { print aData[ARGV[1],idx[2]],aData[ARGV[2],idx[2]] | "sort -n -k1" ; } } }' a.txt b.txt 100 wang man 90 80 200 wangsan woman 80 70 300 wangming man 60 50 400 wangzheng man 70 20 코드 설명:
2 차원 배열, aData [파일 이름, 관련 열 대응 값] 을 사용 합 니 다. 이 방법 은 여러 파일 내용 을 사용 할 수 있 습 니 다.2 차원 배열 을 통일 하 다.그리고 배열 을 순환 하여 if (i, j} in array) 를 통 해 해당 열 값 이 다른 파일 에 존재 하 는 지 찾 습 니 다.
이상 은 두 가지 실현 방법 입 니 다. 그 중에서 첫 번 째 사 고 는 비교적 간단 하고 이해 하기 쉽 습 니 다. 두 번 째 처 리 는 비교적 복잡 합 니 다. 더 좋 은 방법 이 있 으 면 여러분 이 저 에 게 공유 해 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.