Как я могу восстановить изменения для окружения переменной?

egrep "^[A-Z]" FILE | egrep -c "\b[A-Za-z]{5,10}\b"

Путем вопрос теперь, это означает, отфильтруйте строки, начиная с прописной буквы (как эта строка) [строка должна запуститься с прописной буквы - не слово], и включать слово (не обязательно первое слово), который является 5 - 10 символами долго.

Да, после чтения исходного вопроса существует 4 возможности интерпретировать его: Стартовое слово должно выполнить оба требования, или это - стартовое слово и другое слово, и: Получите номера строки или количество строк.

Для печати номеров строки для строк, которые начинаются с прописной буквы и содержат слово где-нибудь длины 5-10, мы используем sed:

sed -nr '/^[A-Z][a-z]{4,9}/=;/^[A-Z].*\b[A-Za-z]{5,10}\b/=' FILE 
3
14.06.2012, 00:28
3 ответа

В целом Вы записываете его перед рукой.

Если Вы спрашиваете об этом в теории, то Вы просто храните старое значение где-то в другом месте прежде, чем изменить ее, то отложенный это каждый раз, когда Вы хотите.

Если Вы спрашиваете об этом, потому что теперь Вы завинчены и надеетесь, что существует что-то, что выручит Вас, то у меня есть плохие новости для Вас...

5
27.01.2020, 21:10

Я не уверен, что существует простой способ сделать это (как cd - двигаться вперед-назад между новым cd команды, например)

Каков контекст выполнения этого.. Вы хотите, чтобы это было доступно автоматически? Я не знаю об этом как о функции никакой оболочки.

Одно очевидное решение состояло бы в том, чтобы явно сохранить переменную перед изменением его, и затем более позднее восстановление он. Используя переменную среды ПОСТАВЩИКА как пример:

$ echo $VENDOR
intel

Сохраните исходное значение:

$ pre_VENDOR=$VENDOR
$ echo $pre_VENDOR
intel

Присвойте новое значение:

$ VENDOR='Zippy'
$ echo $VENDOR
Zippy

Восстановите исходное значение:

$ VENDOR=$pre_VENDOR
$ echo $VENDOR
intel
3
27.01.2020, 21:10

Вы не можете, нет никакой отмены. Сохраните значение в другой переменной (или в файле или везде, где Вам нравится), если Вы хотите иметь его в наличии позже.

old_DISPLAY=$DISPLAY
unset DISPLAY
…
DISPLAY=$old_DISPLAY

Если Вы хотите выполнить единственную команду без переменной среды, использовать env.

env -u DISPLAY emacs

Можно также использовать синтаксис VAR=VALUE COMMAND установить переменную среды VAR к заданному значению только для этой команды.

$ echo $DISPLAY
:0
$ DISPLAY=:1 xterm & # shows the xterm window on display :1
$ echo $DISPLAY
:0

Вы не можете сбросить переменную этот путь, но можно установить его на пустое значение, которое часто достаточно хорошо.

Можно также сохранить изменения локальными для подоболочки. Круглые скобки разграничивают команды для выполнения в подоболочке.

$ env | grep -E 'FOO|BAR'
FOO=value_of_FOO
BAR=value_of_BAR
$ (export FOO=other_value; unset BAR; env | grep -E 'FOO|BAR')
FOO=other_value
$ env | grep -E 'FOO|BAR'
FOO=value_of_FOO
BAR=value_of_BAR

Можно выполнить отдельную оболочку с другой средой. Ввести exit или Ctrl+D для возврата к родительской оболочке.

$ bash
$ # change the environment, change directories, etc.
$ exit
$ # now you're back to the parent shell with its environment as you left it
1
27.01.2020, 21:10

Теги

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