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
これらの1つは、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
のみを含めます。