2017-04-04 11 views
1

저는 리눅스 서버에서 bash를 사용하고 있습니다. 나는바이트 위치로 정렬

20130101 Z27 
20170101 F40 
20170501UZ24 
20160701BA27 
20120411 A27 
20170101 Z30 

과 같은 일부 데이터를했습니다 그리고 난 바이트 위치 = 8-11으로 정렬에서 유일하게 관심이 있습니다. GNU sort이이 바이트 범위로 정렬 할 수있는 방법이 있습니까?

cut의 바이트 수를 지정할 수있는 -b과 비슷한 옵션을 찾고 있습니다.

이 작업을 수행하기 위해 Python 스크립트를 작성할 수 있지만 다른 사람들이 읽고 따라야 할 간단한 bash 스크립트에 모든 것을 보관하고 싶습니다.

답변

3

은 당신이 뭔가를 할 수 있습니다 :

$ sort -t $'\n' -k 1.8,1.11 infile 
20120411 A27 
20160701BA27 
20170101 F40 
20170501UZ24 
20130101 Z27 
20170101 Z30 

-t $'\n'는 필드 분리가 개행 문자, 즉, 모든 라인이 하나 개의 필드로 구성되어 있음을 sort 알려줍니다.

-k 1.8,1.11은 정렬 기준으로 필드 1 내의 문자 8-11을 사용합니다.

+0

감사합니다. 이것은 훌륭한 해결책입니다. – Jon

+0

좋습니다. 감사! – Peddipaga