2014-09-10 5 views
1

나는 이것을 하루 종일 알아 내려고 노력했습니다. 어떤 도움을 주시면 감사하겠습니다.한 파일의 값을 Linux의 다른 파일의 값으로 바꿉니다.

fileA에는 다음과 같은 데이터가 있습니다.

a bal=45 
b bal=40 
c bal=55 
d bal=65 

fileB 내가 두 파일의 첫 번째 열을 일치시켜 FILEA에 = 값 BAL와 fileB에 XX BAL = #을 대체 할 수있는 방법을 찾기 위해 노력하고있어 다음

a type ppm func,bal=#,oth,new 
b type ppm,bal=#,oth,new 
c type ppm func,bal=#,oth,new 
d type ppm,bal=#,oth,new 

가있다 . 같은

출력이 보일 것이다

a type ppm func,bal=45,oth,new 
b type ppm,bal=40,oth,new 
c type ppm func,bal=55,oth,new 
d type ppm,bal=65,oth,new 

fileB 공간과 쉼표로 구분하고 열 B 둘 다 = #이있는 모든 행에 대해 동일하지 않습니다. awk 사용

답변

0

:

$ awk -v OFS="," 'NR==FNR{a[$1]=$2;next}{split($1,t,/ /);$2=a[t[1]]}1' fileA FS="," fileB 
a type ppm func,bal=45,oth,new 
b type ppm,bal=40,oth,new 
c type ppm func,bal=55,oth,new 
d type ppm,bal=65,oth,new 

우리 ,에 출력 필드 구분자를 설정. 우리는과 next 구조를 사용하여 키를 column1로, 값을 column2로 배열 a에 파일 A를 읽습니다. 파일이로드되면 두 번째 파일로 이동합니다. 우리는 split 함수를 사용하여 공간상의 첫 번째 열을 나눕니다. 두 번째 열을 배열의 값으로 설정하고 기본적으로 줄을 인쇄하는 1을 사용하여 줄을 인쇄합니다.

두 번째 파일의 입력 필드 구분 기호는 끝에있는 파일 이름 바로 앞에 배치하여 ,으로 설정합니다.

+1

위대한 작품입니다. 정말 고마워. – mmm

관련 문제