단일 필드 번호를 이중 필드 번호로 교체(1->01)

단일 필드 번호를 이중 필드 번호로 교체(1->01)

다음으로 시작하는 파일이 있습니다.

male 9
male 11
male 9
male 1
female 4
female 13
male 14

내가 사용한다면

sort -u -k1,1 -k2,2n

이 반환

female 13
female 4
male 1
male 11
male 14
male 9
male 9

한 자리 숫자가 01, 02 등으로 표시되어 올바르게 정렬되도록 하려면 어떻게 해야 합니까?

고쳐 쓰다:

-u뒤로 옮기라고 하신 댓글 작성자의 말씀이 맞습니다.

sort -k1,1 -k2,2n -u

효과는 매우 좋습니다. 감사합니다!

답변1

"를 정의하지 않았습니다.올바른 정렬" 어디에서나 첫 번째 열을 기준으로 그룹화하고 두 번째 열의 숫자 값을 오름차순으로 정렬하고 중복 값을 제거하고 싶다고 가정합니다. 이 솔루션은 실제로 원하는 것이 아니지만 원하는 것 같습니다. 보고 싶어.

sort -k1,1 -k2,2n -u datafile
female 4
female 13
male 1
male 9
male 11
male 14

두 번째 열을 두 자리 숫자로 채우려면 다음을 사용할 수 있습니다.

xargs printf "%s %02d\n" <datafile
male 09
male 11
male 09
male 01
female 04
female 13
male 14

답변2

두 번째 열로만 정렬하려면 다음을 시도해 보세요(GNU 사용 sed).

sed -E 's/ ([0-9]{1}$)/ 0\1/' file | sort -u -k2,2n

산출:

male 01
female 04
male 09
male 11
female 13
male 14

관련 정보