
나는 4.09GB 단어 목록/사전의 사본을 가지고 있습니다 crackstation.txt
. 지금은 단어와 숫자가 일반적인 순서로 정렬되어 있습니다.
0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT uUvVwWxXyYzZ
순서를 다음과 같이 재정렬하려면 어떻게 해야 합니까?
tTaAsShHwWiIoObBmMfFcCdDpPnNeEgGrRyYuUvVjJkKqQzZxX 1023985467
이 순서는 가장 인기 있는 것(왼쪽)부터 가장 인기 없는 것(오른쪽)까지 인기순으로 영어 단어의 첫 글자를 제공합니다.
답변1
grep, sed, awk 및 sort와 같은 일부 도구를 사용하면 다음에서 몇 가지 답변을 구현할 수 있습니다.이 다른 사이트. 여기에는 다음이 포함됩니다(b, d를 원하면 일반적으로 다른 모든 것).
첫 번째부터 시작하여 두 번째 등 원하는 순서대로 줄을 당깁니다."
grep '^b' myfile > outfile
grep '^d' myfile >> outfile
grep -v '^b' myfile | grep -v '^d' | sort >> outfile
먼저 사용자 정의 "정렬 키"를 추가한 다음 정렬하고 나중에 제거하세요.
sed -e 's/^b/0&/' -e t -e 's/^d/1&/' -e 't' -e 's/^/2/' |
sort |
sed 's/^.//'
가장 쉬운 것은 다음과 같습니다.
사용자 정의 정렬 기능을 쉽게 지정할 수 있는 Perl, Python 또는 Ruby와 같은 언어를 사용하십시오.
perl -e 'print sort {($b =~ /^[bd]/) - ($a =~ /^[bd]/) ||
$a cmp $b} <>'
python -c 'import sys; sys.stdout.write(sorted(sys.stdin.readlines(), key=lambda s: (0 if s[0]=="b" else 1 if s[0]=="d" else 2), s))'
아니면 awk를 시도해 보세요(설명 없음, YMMV).
sort myfile | awk '$0 ~ /^b/ || $0 ~ /^d/ {print} $0 !~ /^b/ && $0 !~ /^d/ { a[f++] = $0 } END { for (word = 0; word < f; word++) { print a[word] } }'