각 줄의 특정 위치를 기준으로 텍스트 정렬

각 줄의 특정 위치를 기준으로 텍스트 정렬

내가 달성하고 싶은 것은 텍스트의 특정 지점을 기준으로 텍스트 줄을 정렬하는 것입니다(텍스트 줄에는 공백이나 열이 없습니다). 이에 대한 해결책을 찾았지만 더 직접적이고 간단한 방법이 있는지 알고 싶습니다.

이에 대한 현재 방법은 중단을 일으키는 것입니다. 즉, 모든 줄의 동일한 위치에 새 열을 만들고(정렬하려는 지점 직전 - 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    

복잡성을 더 추가하려면 동일한 Sn이 1개 이상인 상황에서 이름을 고려하고 싶습니다(그러나 이는 의 플래그를 사용하여 해결할 수 있다고 생각합니다 sort).

답변1

sort -t_ -k2 infile밑줄을 구분 기호로 사용하여 두 번째 키를 사용하여 데이터를 정렬합니다.

관련 정보