次のデータを含むテキストファイルがあります。
Name Feature
Marry Lecturer
Marry Student
Marry Leader
Bob Lecturer
Bob Student
Som Student
私は各人に3つの特性しかありません。講師、学生そしてリーダー。
上記の例は1つの例に過ぎず、実際のデータにはこれらの機能を持つ人が多くいます。
次に、各機能に欠けている3つの機能を確認できるUnixスクリプトを作成したいと思います。
Key-Value関係を設定すると可能であることがわかりますが、正しく把握できません。
私はbash
SunOS 5.10 i386でシェルを実行しています。
ベストアンサー1
list.txtに名前のリストがある場合は、次のことができます。
for i in Student Leader Lecturer; do grep -F $i list.txt | cut -d ' ' -f 1 | sort > $i.out ; done
3つの別々のソートされたファイルから名前を取得するにはdiffuse
(またはまたはxxdiff
)とdiff3
比較できます。
diffuse *.out
各タグに欠落している人の名前を含むファイルのみが必要な場合は、最初にすべての名前を含むファイルを作成してから、そのリストにないuniq -u
人(本当にユニークな人)を見つけることができます。
sed -n '1!p' list.txt | cut -d ' ' -f 1 | sort -u > names.all
for i in Student Leader Lecturer; do fgrep $i list.txt | cut -d ' ' -f 1 | cat - names.all | sort | uniq -u > $i.missing ; done
スクリプトとファイルを介してこれを行うには、次のようにしますfeature
。
Leader
Student
Lecturer
ソーステーブルには次のものがexample.txt
あります。
#!/bin/bash
rm -f *.missing names.all
feature=feature
sed -n '1!p' example.txt | cut -d ' ' -f 1 | sort -u > names.all
for i in $(cat $feature)
do
fgrep $i example.txt | cut -d ' ' -f 1 | cat - names.all | sort | uniq -u > $i.missing
done