두 번째 열의 성으로 정렬

두 번째 열의 성으로 정렬

다음과 같은 항목이 포함된 파일을 정렬하려고 합니다.

Essie    |   Vaill   |    14225 Hancock Dr       |      Anchorage  |   AK  |   99515 907-345-0962

"|"는 다양한 크기의 태그를 나타냅니다. 나는 이것을 두 번째 필드를 기준으로 정렬하려고 합니다. 이 경우 성은 알파벳 순서로 정렬됩니다. 예를 들어 몇 가지 다른 명령을 시도했습니다(주소.txt는 파일 이름입니다).

sort -k 2 addresses.txt
sort -t$'\t' -k2 addresses.txt
sort -t "`/bin/echo '\t'`" -k 2 addresses.txt

이들 중 어느 것도 내가 원하는 결과를 얻지 못했고 인터넷을 검색한 후에도 내가 필요한 방식으로 작동하는 솔루션을 찾을 수 없었습니다. 누군가 두 번째 열을 알파벳순으로 정렬하는 방법을 찾는 데 도움을 줄 수 있다면 매우 감사하겠습니다.

답변1

이것을 시도해 볼 수 있습니까?

sort -t"|" -k2 address.txt

내 생각엔 이게 효과가 있을 것 같아

답변2

Perl의 보다 일반적인 접근 방식입니다. 공백이 일반 공백이나 탭과 다르게 인코딩되는 경우 다음이 도움이 될 수 있습니다.

perl -aF'[[:blank:]]+' -nle '
    $lines{$_}=[@F];
    END{
        print for sort { $lines{$a}[1] cmp $lines{$b}[1] } keys %lines
    }' your_file

그러나 sort.

관련 정보