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에 따라 라이센스가 부여됩니다.