辞書/単語リストを最適化する方法は?


0

4.09 GBのワードリスト/辞書のコピーを持っていますcrackstation.txt。ちょうど今、単語と数字は通常の順序で並べられています:

0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT uUvVwWxXyYzZ

注文を次のように再配置するにはどうすればよいですか?

tTaAsShHwWiIoObBmMfFcCdDpPnNeEgGrRyYuUvVjJkKqQzZxX 1023985467

このシーケンスは、英語の単語の最初の文字を、人気のあるもの(左)から人気の低いもの(右)の順に並べます。

回答:


1

grep、sed、awk、sortなどのツールを使用すると、この他のサイトからいくつかの回答を実装できます。それらには以下が含まれます(bが必要な場合、dが必要な場合、他のすべては通常)

1行目から2行目など、必要な順序で行を引き出します」

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] } }'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.