Могу ли я извлечь из этих данных n-й «фрагмент»?

Что ж, мне удалось удалить кодовую фразу или создать новый ключ без парольной фразы с помощью программы 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.

-1
05.01.2021, 08:55
2 ответа

С реализациями awk, которые поддерживают регулярное выражение в качестве разделителя записей (RS), например, GNU awk, вы можете сделать:

awk -v n=3 -v RS='(\n+|^)% QUESTION\n' 'NR == n+1 {print; exit}' < questions.txt
6
18.03.2021, 22:39

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?
0
18.03.2021, 22:39

Теги

Похожие вопросы