我想要實現的是按文字中的特定點對文字行進行排序(文字行沒有空格或列)。我已經找到了解決方案,但我想知道是否有更直接、更簡單的方法。
我目前的方法是造成中斷,即在每行的同一位置建立一個新列(就在我想要排序的點之前 - 這是 Sn_L001_Rn),然後按該列排序,然後連接兩列重新走到一起。這可行,但看起來過於複雜和笨重。我看過關於用 awk 製作評分系統的帖子,但由於我的評分系統至少要達到 96,所以這看起來很長。我也看到 sqlite 可能適用,但這似乎也同樣冗長。如果這個問題已經被問過,我很抱歉,但到目前為止我還沒有找到一個簡單的方法來解決它。
以下是一些輸入範例:
SOON_S2_L001_R1_001.txt
SOON_S2_L001_R2_001.txt
HELLO_S4_L001_R1_001.txt
HELLO_S4_L001_R2_001.txt
BASH_S1_L001_R1_001.txt
BASH_S1_L001_R2_001.txt
WORLD_S3_L001_R1_001.txt
WORLD_S3_L001_R2_001.txt
期望的輸出:
BASH_S1_L001_R1_001.txt
BASH_S1_L001_R2_001.txt
SOON_S2_L001_R1_001.txt
SOON_S2_L001_R2_001.txt
WORLD_S3_L001_R1_001.txt
WORLD_S3_L001_R2_001.txt
HELLO_S4_L001_R1_001.txt
HELLO_S4_L001_R2_001.txt
為了增加進一步的複雜性,在 超過 1 個相同 Sn 的情況下,我希望它考慮到名稱(儘管我認為這可以使用 中的標誌來解決sort
)。
答案1
sort -t_ -k2 infile
將使用第二個鍵以下劃線作為分隔符號對資料進行排序。