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
이름만 포함합니다.