다음과 같은 항목이 포함된 파일을 정렬하려고 합니다.
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
.