วิธีเพิ่มประสิทธิภาพรายการพจนานุกรม / คำ


0

ผมมีสำเนาของ 4.09 GB WordList / crackstation.txtพจนานุกรม ตอนนี้คำและตัวเลขเรียงตามลำดับปกติ:

0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT uUvVwWxXyYzZ

ฉันจะจัดเรียงลำดับใหม่เป็นอย่างไร:

tTaAsShHwWiIoObBmMfFcCdDpPnNeEgGrRyYuUvVjJkKqQzZxX 1023985467

ลำดับนี้จะให้ตัวอักษรแรกของคำภาษาอังกฤษตามลำดับความนิยมจากยอดนิยม (ซ้าย) ถึงความนิยมน้อยที่สุด (ขวา)

คำตอบ:


1

การใช้เครื่องมือบางอย่างเช่น grep, sed, awk & sort คุณสามารถใช้คำตอบจากไซต์อื่นนี้ได้ พวกเขารวมถึง (ถ้าคุณต้องการขแล้วงั้นทุกอย่างอื่นตามปกติ):

ดึงเส้นตามลำดับที่ต้องการโดยเริ่มจากบรรทัดแรกจากนั้นบรรทัดที่สองเป็นต้น "

grep '^b' myfile > outfile
grep '^d' myfile >> outfile
grep -v '^b' myfile | grep -v '^d' | sort >> outfile

เพิ่ม "sort key" ที่กำหนดเองของคุณก่อนจากนั้นจัดเรียงจากนั้นลบออกในภายหลัง:

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] } }'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.