두 개의 파이프로 구분된 파일이 있습니다.
파일 1.txt
f1|f2|f3|f4|
123456|C|aws|zip|
589445|D|csv|zip|
789466|C|txt|tar|
874512|A|row|war|
파일 2.txt
f1|f2|f3|f4|
458788|C|aws|zip|
589445|D|||
789466|C|wd|rar|
458745|A|xls|rar|
최종.txt
123456|C|aws|zip|
789466|C|wd|rar|
874512|A|row|war|
458745|A|xls|rar|
1. File2에서 필드 f2를 가져와 D인 경우 File2에서 해당 필드 f1을 가져와서 File1에서 필드 f1과 일치하는 해당 행을 찾은 다음 File1에서 행을 삭제합니다. 같은 방법
2. File2에서 필드 f2를 가져와서 C인 경우 File2에서 해당 필드 f1을 가져와서 File1에서 해당 행 일치 필드 f1을 찾고 File1의 행을 File2의 해당 행으로 바꿉니다.
2. File2에서 필드 f2를 가져옵니다. A인 경우 해당 행을 File1에 직접 새 행으로 추가합니다.
답변1
이것은 나에게 효과적입니다.
while read line
do
i=$(echo $line | cut -d\| -f1 )
f=$(echo $line | cut -d\| -f2 )
case $f in
D) sed -i /^$i/d File1.txt ;;
C) sed -i s/^$i.*/$line/ File1.txt ;;
A) echo $line >> File1.txt;;
esac
done < File2.txt