Повторить печать шаблона n раз в одной строке с помощью sed

По всей видимости, нет способа проверить, на какой глубине tmux вы сейчас находитесь. Однако вы можете легко создать собственное решение. Просто сделайте переменную в .bashrc/.bash_profile/.profile следующим образом:

if [[ ! -n "${LC_NESTING_DEPTH}" ]]; then
    export LC_NESTING_DEPTH=1
else
    export LC_NESTING_DEPTH=$(expr 1 + $LC_NESTING_DEPTH)
fi

Поскольку .bashrc загружается каждый раз, когда вы входите в tmux, переменная увеличивается на два. Вы даже можете передать переменную по ssh, добавив SendEnv LC_NESTING_DEPTH в ~/. ssh/config на вашей машине, и AcceptEnv LC_NESTING_DEPTH в /etc/ssh/sshd_config на машине, к которой вы подключаетесь по ssh (см. man ssh_config и man sshd_config для дополнительной информации об этом). Я не смог проверить ssh-ing из запущенной сессии ssh, но я предполагаю, что вы можете передавать переменную и оттуда.

1
21.03.2019, 10:28
1 ответ

Используя GNU sed, мы можем сгенерировать желаемый результат, как показано ниже:

$ sed -Ee '
     s/label="([^"]+)" selected[>]/\n\1\n/
     s/.*\n(.*\n)/\1/
     /\n/!d
     P;D
' input.txt

Выходы:

snd 1
snd 2
snd 3

С помощью Perlвы можете сделать это одним вкладышем:

$ perl -lne 'print for /label="([^"]+)" selected[>]/g' input.txt
1
27.01.2020, 23:41

Теги

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