2014-01-22 9 views
0

두 파일이 있습니다 - 각 파일에 두 개의 열과 많은 행이 있습니다 .. 두 번째 파일의 정보를 업데이트하고 첫 번째 파일에 덮어 쓰기해야합니다.awk에서 내 열 정보 업데이트

을 File1 :

예를 들어

있는 File2

A 1  B 7 
B 2  C 8 
C 3  D 9 
D 4  E 10 
E 5  H 1 
F 6  I 7 
G 7 

그리고 기존 값 두 번째 파일에서 새 값을 추가하고 업데이트해야합니다

Final_file :

A 1 
B 7 
C 8 
D 9 
E 10 
F 6 
G 7 
H 1 
I 7 

I을 내 질문에 분명히 희망을. 중요한 점은 두 파일의 행 수가 같지 않고 행이 일치하지 않는다는 것입니다.

awk 'NR==FNR { a[$1]=$2; next} $1 in a {print $0, a[$1]}' File1 File2 

하지만 OUPUT 것은 단지 일치하는 열 :

나는 이런 식으로 뭔가 시도했다

B 2 7 
C 3 8 
D 4 9 
E 5 10 

하는 사람의 모든 정보 업데이트를 유지하기 위해 내 코드를 해결하는 데 도움 주실를!

고맙습니다.

답변

1
awk '{a[$1]=$2}END{for(x in a)print x, a[x]}' f1 f2 

$1 in a을 확인하지 않아도됩니다. $1이 이미 a 인 경우 단순히 데이터를 덮어 쓰려고하기 때문입니다.

그래서 그냥 덮어 씁니다.

+0

정말 고마워요. 계속 정렬 할 수 있습니까? 그리고 제대로 작동하는지 확인하는 것이 가능합니까? 수천 개의 행이 있습니다 .. 제가 얼마나 많은 업데이트를했고 얼마나 많은 새로운 값을 추가했는지 계산하고 싶습니다. 귀하의 모든 도움에 감사드립니다 !!! – Geroge

+0

어쩌면 새 항목에서 업데이트 하나를 분리 할 수 ​​있다면 :-) 이것은 매우 도움이 될 것입니다 ... 다시 한 번 감사드립니다 .. – Geroge

+0

@ user2881857 pipe to'sort'? – Kent