按每行的特定位置對文字進行排序

按每行的特定位置對文字進行排序

我想要實現的是按文字中的特定點對文字行進行排序(文字行沒有空格或列)。我已經找到了解決方案,但我想知道是否有更直接、更簡單的方法。

我目前的方法是造成中斷,即在每行的同一位置建立一個新列(就在我想要排序的點之前 - 這是 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將使用第二個鍵以下劃線作為分隔符號對資料進行排序。

相關內容