차이점이 있는 두 파일만 병합

차이점이 있는 두 파일만 병합

두 개의 파일이 있습니다. file1다음과 같은 텍스트가 포함됩니다.

#This Data written by the platform Team
id=kingDB

file2다음과 같은 텍스트가 포함됩니다.

#This Data written by the platform Team
id=kiteDB,mangoDB

file1데이터를 병합하고 싶습니다 file2.file2다음이 필요합니다:

#This Data written by the platform Team
id=kiteDB,mangoDB,kingDB

어떻게 해야 하나요?

답변1

파일로 병합하는 일반적인 방법은 다음과 같습니다.join

join -t = file{1,2} | sed s/=/,/2

답변2

sed, tail및 다음을 사용할 수 있습니다 cut.

 sed -i "s/=\(.*\)/=\1,$(tail -1 file1 | cut -d = -f 2)/" file2

First 사이의 명령은 $(...)마지막 줄을 가져오고 file1문자 =를 기준으로 잘라낸 다음 초 필드( kingDB)를 가져온 다음 두 번째 파일에서 "="를 사용하여 줄 끝에 넣습니다.

모든 sed버전에 해당 기능이 있는 것은 아닙니다 -i. 해당 버전에서 시도하지 않는 경우:

sed "s/=\(.*\)/=\1,$(tail -1 file1 | cut -d = -f 2)/" file2 > file2.tmp
mv -f file2.tmp file2

¹ 이것은 줄바꿈으로 끝나는 것으로 가정합니다 . 그렇지 않은 경우에는 생략하고 그대로 둘 수 있습니다.file2sed

답변3

단일 행이 있는 경우 다음 코드를 사용할 수 있습니다.

echo "id=" $(paste -d "" <( awk -F',' {'printf "%s,%s,", $1, $2  '} file2 ) <( awk -F'=' {'print $2'} file1 ) <(sed -i 's/id=//g' file2 )) > file2

관련 정보