Что ж, мне удалось удалить кодовую фразу или создать новый ключ без парольной фразы с помощью программы pinentry -gtk -2. Вот что я сделал:
В ~/.gnupg нет файла конфигурации. Я создал символическую ссылку с /usr/bin/pinentry
на /usr/bin/pinentry-gtk-2
sudo ln -s /usr/bin/pinentry-gtk-2 /usr/bin/pinentry
Он также работал над соединением SSH
с переадресацией X11.
С реализациями awk
, которые поддерживают регулярное выражение в качестве разделителя записей (RS
), например, GNU awk
, вы можете сделать:
awk -v n=3 -v RS='(\n+|^)% QUESTION\n' 'NR == n+1 {print; exit}' < questions.txt
GNU sed , использующий расширенный режим регулярных выражений -E
, будет использоваться для решения этой проблемы. Основная идея состоит в том, чтобы накапливать последовательные строки вопросов % и строки между ними в пространстве шаблонов. В то время как счетчик хранится в пространстве удержания в виде строки точек.
chunk=2
sed -E ':loop
/%/,/%/N
/%.*%/!{
/%/!d;$!bloop
s/$/\nfiller/
}
G;s/$/./
/\n[.]{'"${chunk}"'}$/bend
h;s/.*\n//;x
s/.*(\n.*)\n.*$/\1/;D
:end
s/^[^\n]*\n+(\S.*\S)(\n.*){2}$/\1/
q
' file
В качестве альтернативы, perl в режиме slurp с FS, установленным на строки вопросов. Элементы массива @F должны быть фрагментами.
perl \
-F'/(?:^|\n+)\%\h+QUESTION\n+/' \
-pals -0777 \
-e '$_=$F[$n]' \
-- -n="${chunk}"./file;
Выход:
Who played
guitar
for The Beatles?