Думаю, вам нужно использовать OpenSSL, чтобы подключиться к серверу и посмотреть, какие шифры возвращаются.
Попробуйте
openssl s_client -connect ldapserver.domain:636
Должна быть возвращена строка для "Шифры"
Использование AWK:
BEGIN {
srand()
answers[1] = ""
delete answers[1]
}
function outputanswers(answers, len, i) {
len = length(answers)
while (length(answers) > 0) {
i = int(rand() * len + 1)
if (answers[i]) {
print answers[i]
}
delete answers[i]
}
}
/^$/ {
outputanswers(answers)
print
}
/^[^(]/
/^\(/ {
answers[length(answers) + 1] = $0
}
END { outputanswers(answers) }
Это работает путем накопления ответов в массиве answers
и вывода его содержимого в случайном порядке, когда это необходимо. Строки считаются ответами, если они начинаются с открывающей скобки (Я надеюсь, что это правильное упрощение вашей спецификации ).
перл:
perl -F'\n' -MList::Util=shuffle -pal -00e '$"=$\;
$_ = "@{[/^\([X ]\)/ ? shuffle(@F) : @F]}"
. ($", $,)[eof];
' file
Сед ГНУ
sed -ne '
/^([X ])/!{p;d;} ;# just print noninteresting lines
:loop
H;$bshfl # accumulate the interesting lines in hold space
n
//bloop
:shfl
x;s/.// ;# retrieve hold n strip leading newline
s/.*/printf %s\\n "&" | shuf/ep ;# shuffle
z;x;/^([X ])/!s/^/\n/;D ;# null hold n loop back for more
' file
Вывод:текущего прогона
% QUESTION
Who played drums for The Beatles?
( ) John
( ) Georgen
( ) Paul
(X) Ringo
% QUESTION
What is the first line of MOBY DICK?
( ) eggsn
(X) Call me Ishmael.
( ) bar
( ) spam
( ) foo
Это perl
было бы дословным переводом предмета вашего вопроса:
perl -MList::Util=shuffle -0777 -pe'
s{(?:^\([X ]\).*\n)+}{
join "", shuffle $& =~ /.*\n/g
}gme' < file
Он s
заменяет каждую последовательность из одной или нескольких(+
)строк, соответствующих ^\([X ]\).*\n
, строками(.*\n
)из , которые($&
)suffle
d.
Для подхода с использованием GNUsort -R
:
<file awk '/^\([X ]\)/{if(y)n++;x=1};{y=x;x=0;print NR-n"\t"$0}' |
sort -k1,1n -k1R |
cut -f2-
awk
украшает ввод как:
1 % QUESTION
2 Who played drums for The Beatles?
3
4 (X) Ringo
4 ( ) John
4 ( ) Paul
4 ( ) George
5
6 % QUESTION
7 What is the first line of MOBY DICK?
8
9 (X) Call me Ishmael.
9 ( ) foo
9 ( ) bar
9 ( ) spam
9 ( ) eggs
Затем sort
сначала сортирует по первому полю и разрешает ничью случайным образом.
Просто передайте строки, которые вы хотите перетасовать, в shuf
и распечатайте остальные, как -:
$ awk '/^\(/{print | "shuf"; next} !NF{close("shuf")} 1' file
% QUESTION
Who played drums for The Beatles?
( ) John
( ) Paul
(X) Ringo
( ) George
% QUESTION
What is the first line of MOBY DICK?
(X) Call me Ishmael.
( ) foo
( ) spam
( ) eggs
( ) bar