Невозможно расторгнуть запущенную программу / приложение

Что касается приведенных выше примеров ввода, сценарий может быть следующим:

sed s/[^\"\']*[^0-9]\]{\(.*\)}/\1/ <<\END
"[]{foo bar 1}"
"[abc]{foo bar 2}"
"[]{foo[3]{xyz} bar 3}"
"[]{foo $sq[3]{xyz}$ bar 4}"
"[goo{w}]{foo $sq[3]{xyz}$ bar 5}"
"[goo[3]{w}]{foo $sq[3]{xyz}$ bar 6}"
"[goo[3]{w} hoo[3]{5}]{foo $sq[3]{xyz}$ bar 7}"
END

производит

"foo bar 1"
"foo bar 2"
"foo[3]{xyz} bar 3"
"foo $sq[3]{xyz}$ bar 4"
"foo $sq[3]{xyz}$ bar 5"
"foo $sq[3]{xyz}$ bar 6"
"foo $sq[3]{xyz}$ bar 7"

Другая вещь - ваша функция, которую можно упростить:

function RemoveInitialSquareBraces {
    printf '%s\n' "$@" |
    sed ...
}

, таким образом, она будет принимать множество аргументов.

Обновление : в более общем случае вы можете выполнить задачу в два этапа:

sed -e "
s/\[.*\[.*\][^[]*\]/[]/  #remove square brackets inside square brackets
s/\[[^]]*\]{\(.*\)\}/\1/ #lazy strip square brackets and curle brackets
"

Дополнение : вы можете использовать perl- grep (GNU grep с расширением perl):

grep -Po '\[([^][]*\[\w+\][^][]*)*\]{\K.*(?=})'

или sed с тем же регулярным выражением:

sed 's/\[\([^][]*\(\[\w\+\][^][]*\)*\)*\]{\(.*\)}/\3/'
-1
13.11.2018, 18:38
2 ответа

Я не уверен, правильно ли я понимаю, но это случай, когда "ctrl+C" завершает текущую программу, возвращая вас в приглашение оболочки ($ )?

0
28.01.2020, 05:12

Gimp (и другие )завершатся нажатием Ctrl -C.

Если вы хотите восстановить командную строку, вы также можете использовать Ctrl -Z, которая останавливает текущий процесс (, но не завершает его )и возвращает в командную строку.

  • Если вы хотите, чтобы остановленный процесс продолжал работать в фоновом режиме, введите bg.
  • Если вы хотите возобновить процесс на переднем плане, введитеfg

Для более отказоустойчивых процессов вы можете открыть другой терминал (или вкладку )и использовать pkill {processname}, например pkill gimp. Обратите внимание, что аргумент является шаблоном регулярного выражения (, так что, например, gimpможет другой процесс с gimpв его имени ), поэтому используйте его с осторожностью. Обычно ни один процесс не может противостоять опции -9, поэтому используйте ее с особой осторожностью.

Для приложений с графическим интерфейсом есть другой метод :удар Alt-Ctrl-Escape:курсор изменится на череп и кости, наведите его на окно процесса, который вы хотите убить и щелкнуть или ударить Введите , чтобы убить его. Если вы передумаете, просто нажмите Escape , чтобы вернуться к обычному курсору. Также используйте с осторожностью, если вы щелкнете по фону, это убьет оболочку рабочего стола.

0
28.01.2020, 05:12

Теги

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