テキストファイルから欠落している値を見つける

テキストファイルから欠落している値を見つける

次のデータを含むテキストファイルがあります。

 Name             Feature
 Marry            Lecturer
 Marry            Student
 Marry            Leader
 Bob              Lecturer
 Bob              Student
 Som              Student

私は各人に3つの特性しかありません。講師学生そしてリーダー

上記の例は1つの例に過ぎず、実際のデータにはこれらの機能を持つ人が多くいます。

次に、各機能に欠けている3つの機能を確認できるUnixスクリプトを作成したいと思います。

Key-Value関係を設定すると可能であることがわかりますが、正しく把握できません。

私はbashSunOS 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

おすすめ記事