1

awk、sed、sortなどのUNIXスクリプトコマンドを探してこのリストを確認し、1列目、2列目、3列目に基づいて重複を特定し、4列目を使用してどちらが最高バージョンかを判断します。次に、最後の列にタグを付けます。

次のコマンドを使用して、すべての並べ替えと重複の削除をすでに実行しました。

cat orig.txt |sort -t\| -k3 |uniq -u -d > list.uni 
sort -t'|' -k 1,3 -k 4,4n list.uni > list.txt

list.txtと呼ぶ部品名のサンプルリスト

cat list.txt

M86-STD|LIB DRAWING|0186-528013|2| | 
M86-STD|LIB DRAWING|0186-528013|3|B| 
M86-STD|LIB DRAWING|0186-528013|4|C| 
M86-STD|LIB DRAWING|0186-528013|5|D| 
M86_STD|LIB ASSEMBLY|0186-528013|3| | 
M86_STD|LIB ASSEMBLY|0186-528013|4|B| 
M86_STD|LIB ASSEMBLY|0186-528013|5|D| 

結果は次のように表示されます。

M86-STD|LIB DRAWING|0186-528013|2| | 
M86-STD|LIB DRAWING|0186-528013|3|B| 
M86-STD|LIB DRAWING|0186-528013|4|C| 
M86-STD|LIB DRAWING|0186-528013|5|D|Highestver
M86_STD|LIB ASSEMBLY|0186-528013|3| | 
M86_STD|LIB ASSEMBLY|0186-528013|4|B| 
M86_STD|LIB ASSEMBLY|0186-528013|5|D|Highestver

ありがとう

4

1 に答える 1

0
awk -F'|' -e '{b=$1"|"$2"|"$3;h="highest version";if(a==b)h="";a=b;print $0 h}'

アイデアはb、行の現在のシーケンスを識別する 3 つの列が含まれているということです。a前の行の対応する値があります。2 つが異なる場合、これはセットの最初の行であるため、最も高いバージョンです。

于 2012-09-20T13:49:52.657 に答える