Моя вкладка Gmail закреплена и остается первой. Этот небольшой скрипт помогает мне
#!/bin/bash
wmctrl -a $1
xdotool search --onlyvisible --class $1 key Alt+1
./activate_mail.sh Chromium
./activate_mail.sh Firefox
Это работает в моей среде i3wm.
Сperl
$ perl -pe 's/\$\K\d+/$&=~s|.|*|gr/ge' ip.txt
axbnx $** ghjas $**$
axbnx $*** ghjas $
axbnx $*** ghjas $$***
\$\K\d+
совпадение цифр, которым предшествует символ $
(\K
, предотвратит $
от того, чтобы быть частью совпадающей части в$&
)$&=~s|.|*|gr
заменить каждый символ совпадающей части на*
e
флаг, разрешающий использование кода Perl в секции замены Вы также можете использоватьperl -pe 's/\$\d+/$&=~tr|0-9|*|r/ge'
Следующая программа awk
будет последовательно заменять цифры в шаблоне «$
, за которыми следует одна или несколько цифр» на*
:
awk '{do {$0=gensub(/(\$\**)[[:digit:]]/,"\\1*","g");} while ($0~/\$\**[[:digit:]]/)}1' input.txt
Это достигается путем замены шаблона "$
, за которым следует ноль или более *
и затем одна цифра" на "все до цифры, а затем единица *
" (вызов gensub()
)и циклически до тех пор, пока не останется ни одного вхождения шаблона поиска.
Синтаксис в вызове gensub()
предписывает awk
искать шаблон $
, ноль или более *
и одну цифру и сохранять все до цифры (, которая заключена в круглые скобки )в «группу захвата». В заменяющем тексте для этого шаблона эта «группа захвата» упоминается как \\1
и копируется как -, но цифра опускается и вместо нее заменяется литерал *
.
с корректировкой небольшого изменения в моем ответе на ваш ранее заданный вопрос , изменив[^*]
(не -символ звезды )на [0-9]
цифру, вы могли бы сделать:
sed -E ':a s/(\$\**)[0-9]/\1*/; ta' infile
Я не уверен, что если вы хотите сохранить такие шаблоны, как $***123
, от преобразования или не так, как указано в комментарии, но чтобы предотвратить это, вы можете изменить первый символ после $
для этих шаблонов на что-то вроде $<Uniq-character-or-string>*
затем измените остальные паттерны и верните этот паттерн обратно в предыдущее состояние с помощью:
sed -E ':a s/\$\*/$Uniq*/;ta;
:b s/(\$\**)[0-9]/\1*/; tb;
:c s/\$Uniq\*/$*/; tc;
' infile
С GNU awk для соответствия третьего аргумента ()и gensub():
$ awk '{while ( match($0,/(.*)(\$[0-9]+)(.*)/,a) ) $0=a[1] gensub(/[0-9]/,"*","g",a[2]) a[3]} 1' file
axbnx $** ghjas $**$
axbnx $*** ghjas $
axbnx $*** ghjas $$***