2つのファイルを1行ずつ比較し、それらのうちのいくつかが上下に移動したかどうかを確認する方法は? [閉鎖]

2つのファイルを1行ずつ比較し、それらのうちのいくつかが上下に移動したかどうかを確認する方法は? [閉鎖]

「ファイルA」には2018年ランキング大学リストがあり、「ファイルB」には2017年ランキング大学リストがあります。

文書A(2018年ランキング):

University of Oxford
University of Cambridge
California Institute of Technology
Stanford University
Massachusetts Institute of Technology

文書B(2017年ランキング):

University of Oxford
California Institute of Technology
Stanford University
University of Cambridge
Massachusetts Institute of Technology

「スタンフォード大学」は2018年4位、2017年3位を占めた。それで、2018年のスタンフォード大学よりも高い順位を占めた2017年のランキング大学と、2018年のスタンフォード大学よりランクの低い2017年のランキング大学のリストだけを含むファイルを出力したいと思います。

期待される出力には、データを含む2つのファイルを含める必要があります。

**Ranked above Stanford: **
University of Cambridge

**Ranked below Stanford: **
NONE

なし - 2017年にはスタンフォードよりも高いランキングを受けた大学がなかったため、2018年にはスタンフォードよりもランクが低いです。

私はリストに記載されているすべての大学でこれを行うことができることを願っています。

ここに入力されたデータは、1000を超える大学ランキングリストを含む大規模データファイルの一部です。いくつかの大学だけを分析したいです。

ベストアンサー1

以下の答えは、質問を正しい方法で明確に説明し、最終的な解決策です。

awk -F'\n' -v RS='Stanford University' 
    'NR==1 && NR==FNR{for (i=1;i<NF;i++)above[$i]++;next}
     NR==2&&NR==FNR{for (j=2;j<NF;j++)below[$j]++;next} 
     NR==3{for (x=1;x<NF;x++)X2017[$x]++;next}
     NR==4{for (y=2;y<NF;y++)Y2017[$y]++;next} 
END{ for (Z in Y2017) {if (Z in above) print Z>"Ranked-above.txt" }; 
     for (T in X2017) {if (T in below) print T>"Ranked-below.txt" };
}' 2018  2017

出力は2つのファイルですランキング-above.txtそして.txt より低いランク期待される結果として。

**Ranked-above.txt**
University of Cambridge

**Ranked-below.txt**

他の大学を検索して指定できます。RS='University NAME HERE'

おすすめ記事