次の形式を含むファイルを処理しています。
R | CF | PN | seq | UC
801 | 10 | P3 | 643455423 | C1
804 | 11 | P1 | 643455427 | C1
804 | 11 | P1 | 643455427 | C5
802 | 11 | P2 | 643455431 | C1
800 | 11 | P2 | 643455429 | C2
800 | 11 | P2 | 643455429 | C2
802 | 11 | P2 | 643455431 | C2
800 | 11 | P3 | 643455423 | C1
804 | 11 | P3 | 643455433 | C2
802 | 11 | P3 | 643455425 | C3
804 | 11 | P3 | 643455433 | C3
802 | 11 | P4 | 643455425 | C2
801 | 12 | P1 | 643455424 | C2
801 | 12 | P1 | 643455424 | C2
805 | 12 | P1 | 643455434 | C2
805 | 12 | P1 | 643455434 | C3
805 | 12 | P3 | 643455428 | C1
805 | 12 | P3 | 643455428 | C1
801 | 12 | P3 | 643455430 | C3
803 | 14 | P1 | 643455432 | C1
803 | 14 | P1 | 643455432 | C1
803 | 14 | P2 | 643455426 | C1
803 | 14 | P2 | 643455426 | C3
801 | 19 | P4 | 643455430 | C3
私はこれら3つの列の中で最も類似した(最大共通分母)基準で線をグループ化したいと思います。
つまり、2 つ以上の回線が同じ CF-PN-UC 値を共有する場合はグループ化し、そうでない場合は同じ CF-PN を共有する回線をグループ化し、そうでなければ残りは CF グループ化にグループ化する必要があります。 。
次の結果を得る方法はありますか?
R | CF | PN | seq | UC
#CF
801 | 10 | P3 | 643455423 | C1
#CF-PN
804 | 11 | P1 | 643455427 | C1
804 | 11 | P1 | 643455427 | C5
#CF-PN-UC
800 | 11 | P2 | 643455429 | C2
800 | 11 | P2 | 643455429 | C2
802 | 11 | P2 | 643455431 | C2
#CF-PN
800 | 11 | P3 | 643455423 | C1
804 | 11 | P3 | 643455433 | C2
#CF-PN-UC
802 | 11 | P3 | 643455425 | C3
804 | 11 | P3 | 643455433 | C3
#CF
802 | 11 | P2 | 643455431 | C1
802 | 11 | P4 | 643455425 | C2
#CF-PN-UC
801 | 12 | P1 | 643455424 | C2
801 | 12 | P1 | 643455424 | C2
805 | 12 | P1 | 643455434 | C2
#CF-PN-UC
805 | 12 | P3 | 643455428 | C1
805 | 12 | P3 | 643455428 | C1
#CF
805 | 12 | P1 | 643455434 | C3
801 | 12 | P3 | 643455430 | C3
#CF-PN-UC
803 | 14 | P1 | 643455432 | C1
803 | 14 | P1 | 643455432 | C1
#CF-PN
803 | 14 | P2 | 643455426 | C1
803 | 14 | P2 | 643455426 | C3
#CF
801 | 19 | P4 | 643455430 | C3
ご協力ありがとうございます。
ベストアンサー1
それはただ注文の問題です:
head -2 input.file; tail -n +3 input.file | sort -t '|' -k2,2n -k3,3 -k5,5
これは、「列2に基づいて数字をソートします。同点の場合は列3に基づいてソートします。同点の場合は列5に基づいてソートします」を意味します。