Когда Вам нужны данные, которые будут отсортированы вне sort
возможность, общий подход должен предварительно обработать данные, чтобы предварительно ожидать ключ сортировки, затем вид, и наконец удалить дополнительный ключ сортировки. Например, здесь, добавьте a 0
если строка запускается с b
, a 1
если строка запускается с d
, и a 2
иначе.
sed -e 's/^b/0&/' -e t -e 's/^d/1&/' -e 't' -e 's/^/2/' |
sort |
sed 's/^.//'
Обратите внимание, что это сортирует весь b
и d
строки. Если Вы хотите эти строки в первоначальном заказе, то самый легкий подход должен отделить строки, которые Вы хотите оставить неотсортированным. Можно, однако, работать исходная строка в ключ сортировки с nl
— но здесь это более сложно. (Замена \t
литеральным символом табуляции повсюду, если Ваш sed не понимает тот синтаксис.)
nl -ba -nln |
sed 's/^[0-9]* *\t\([bd]\)/\1\t&/; t; s/^[0-9]* *\t/z\t0\t/' |
sort -k1,1 -k2,2n |
sed 's/^[^\t]*\t[^\t]*\t//'
С другой стороны, используйте язык, такой как 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))'
или если Вы хотите уехать b
и d
строки в первоначальном заказе:
perl -e 'while (<>) {push @{/^b/ ? \@b : /^d/ ? \@d : \@other}, $_}
print @b, @d, sort @other'
python -c 'import sys
b = []; d = []; other = []
for line in sys.stdin.readlines():
if line[0]=="b": b += line
elif line[0]=="d": d += line
else: other += line
other.sort()
sys.stdout.writelines(b); sys.stdout.writelines(d); sys.stdout.writelines(other)'
Смена набора шифров была окончательным решением.
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256;
Проблема заключалась в том, что Firefox 30 пока не поддерживает указанный шифр.