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
В целом Вы записываете его перед рукой.
Если Вы спрашиваете об этом в теории, то Вы просто храните старое значение где-то в другом месте прежде, чем изменить ее, то отложенный это каждый раз, когда Вы хотите.
Если Вы спрашиваете об этом, потому что теперь Вы завинчены и надеетесь, что существует что-то, что выручит Вас, то у меня есть плохие новости для Вас...
Я не уверен, что существует простой способ сделать это (как cd -
двигаться вперед-назад между новым cd
команды, например)
Каков контекст выполнения этого.. Вы хотите, чтобы это было доступно автоматически? Я не знаю об этом как о функции никакой оболочки.
Одно очевидное решение состояло бы в том, чтобы явно сохранить переменную перед изменением его, и затем более позднее восстановление он. Используя переменную среды ПОСТАВЩИКА как пример:
$ echo $VENDOR
intel
Сохраните исходное значение:
$ pre_VENDOR=$VENDOR
$ echo $pre_VENDOR
intel
Присвойте новое значение:
$ VENDOR='Zippy'
$ echo $VENDOR
Zippy
Восстановите исходное значение:
$ VENDOR=$pre_VENDOR
$ echo $VENDOR
intel
Вы не можете, нет никакой отмены. Сохраните значение в другой переменной (или в файле или везде, где Вам нравится), если Вы хотите иметь его в наличии позже.
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