Unix에서 두 파일 간의 차이점만 찾기(추가)

Unix에서 두 파일 간의 차이점만 찾기(추가)

2개의 파일이 있습니다. name1.txt 및 name2.txt.

names1.txt에는 나타나지만 names2.txt에는 누락된 이름을 알아야 합니다. 그런 다음 다른 파일인 Missing_names.txt에 저장해야 합니다.

Diff 명령은 차이점을 제공하지만 많은 정보도 인쇄합니다. 또한 names2.txt에는 있지만 names1.txt에는 없는 이름을 알고 싶지 않습니다. 따라서 (names1.txt - names2.txt) 작업과 같습니다.

답변1

diff <(sort -u names2.txt) <(sort -u names1.txt) | 
  sed -n -e 's/^> //p' > missing_names.txt 

또는

diff <(sort -u names1.txt) <(sort -u names2.txt) | 
    sed -n -e 's/^< //p' > missing_names.txt 

이들 중 하나는 Name2의 이름이 아닌 Name1의 이름만 제공합니다.

diff(와 같은 출력 형식 지정 옵션 없음 -u) (> 뒤에 공백) 접두사가 붙은 추가 내용과 >(< 뒤에 공백) 접두사가 붙은 삭제 내용을 인쇄합니다. 존재하는 경우 <스크립트는 sed행의 시작 부분에서 이를 제거하고 수정된(즉, 일치하는) 행만 인쇄합니다.

답변2

cat name_1.txt | while read line
do
  grep -q "$line" name_2.txt
  if [ "$?" -gt "0" ]; then
     echo "$line" >> name_3.txt
  fi
done

노트:이를 가정 name_1.txt하고 name_2.txt이름만 포함합니다.

관련 정보