ArchWiki имеет хороший ответ на это:
activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
activeWinId=${activeWinLine:40}
Используя sed
можно сделать это в одной строке, которая является, вероятно, самым читаемым способом сделать это:
activeWin="$(xprop -root | sed -n 's/^_NET_ACTIVE_WINDOW(WINDOW): window id # //p')"
Отметьте это xdotool
пропускал в моем Debian минимальный X11 в то время как xprop
был включен (аналогично sed
конечно).
Если Вы не хотите разветвляться sed
ни grep
можно сделать текстовое преобразование это полностью в bash
, который, возможно, безопасен в случае, если вывод xprop
изменения немного:
activeWin="$(xprop -root)"
activeWin="${activeWin#*_NET_ACTIVE_WINDOW(WINDOW):}'
activeWin="${activeWin%%?_NET_*}'
activeWin="${activeWin##* }'
Так или иначе это - все еще странный способ заархивировать такую простую задачу.
Есть один способ. Он предполагает, что вопросы разделены последовательными новыми строками (\n\n
).
$ perl -000pe 's/\n/\n\\begin{enumerate}\n/;
s/\n\d./\n\\item /g; s/$/\\end{enumerate}\n/' file
l. Lorem ipsun la la la?
\begin{enumerate}
\item Sopor
\item Stupor
\item Torpor
\end{enumerate}
2. A patient has Lorem?
\begin{enumerate}
\item Sopor
\item Stupor
\item Somnolentia
\item La
\item Coma\end{enumerate}
-000
: активируйте режим параграфа Perl , это приведет к тому, что "строки" будут определены двумя последовательными новыми строками (\n\n
), так что каждый Ваш вопрос будет рассматриваться как одна строка. -pne
: прочитайте каждую строку входного файла и распечатайте ее (-p
) после применения скрипта, переданного как -e
.s/\n/\n\\begin{enumerate}\n/
: замените 1-ю новую строку этой строки (вопроса) на \begin{enumerate}\n
.s/\n\d. /\n\\item /g
: замените любое (g
) число, которое появляется сразу после символа новой строки, на символ новой строки и \item
с последующим пробелом. s/$/\\end{enumerate}\n/'
: замените конец записи ($
) на \end{enumerate}
и новую строку.