Grep между 1-м вхождением и 1-м другим вхождением

Мы будем использовать переменную окружения ZDOTDIRв качестве источника пользовательского файла запуска. Создайте каталог, например. ~/.config/zsh/и создайте там файл .zshrcсо следующим содержимым:

#!/bin/sh
# By default, this file will not be sourced by zsh.

# Source config files at the default places:
. ~/.zshrc
. ~/.zshenv

# custom commands:
. ~/bin/activate

Теперь вы можете запустить (и заменить $TERMINALэмулятором вашего терминала, напримерtilix)

ZDOTDIR=~/.config/zsh $TERMINAL -e zsh

, чтобы открыть новый терминал с запущенным zsh с пользовательским ZDOTDIR.

См. также:Файлы запуска и завершения работы Zsh — ArchWiki

2
08.10.2020, 12:57
1 ответ

Одним из способов может быть использование Perl-совместимых регулярных выражений, которые поддерживают обходные пути:

$ grep -oP '(?<="name":").+?(?=",)' file
Subdivision01
Department28
Division07

-Pвключает поддержку PCRE, а -oуказывает grepпечатать только совпадающую часть строки.

(?<=foo)barявляется положительным просмотром назад:он будет соответствовать barтолько в том случае, если ему непосредственно предшествует foo. Тогда bar(?=foo)является положительным просмотром вперед , он будет соответствовать bar, только если сразу за ним следует foo. Итак, используемое нами регулярное выражение ищет самую короткую строку(.+?)между "name":"и ",.

3
18.03.2021, 22:58

Теги

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