извлечь все слова между двумя совпадающими словами

Он не принадлежит ни к одному пакету. Это конфигурационный файл, который вы создаете для изменения поведения динамического компоновщика.

man ld.so содержит подробную информацию.

/etc/ld.so.nohwcap

При наличии этого файла динамический компоновщик будет загружать неоптимизированную версию библиотеки, даже если процессор поддерживает оптимизированную версию.

Хотя этот файл не упоминается в man ld.so на Jessie (Debian 8), поведение не изменилось.

0
29.01.2019, 18:14
4 ответа

Использование регулярного выражения bash дало бы (предположение о том, что строка находится в переменной):

$ line="vertical on; select blah blah blah contains all special characters including /*?&;  Done"
$ [[ "$line" =~ select(.*)Done ]] && echo ${BASH_REMATCH[1]}
blah blah blah contains all special characters including /*?&;
0
28.04.2021, 23:37

Попробуйте

sed -e 's/select\(.*\)Done/\1/'
0
28.04.2021, 23:37

Попробуйте это,

 sed -e 's/.*select//;s/Done.*//'
0
28.04.2021, 23:37

Использование Perl -совместимых регулярных выражений (PCRE):

(?<=word1).*?(?=word2)

Применение приведенного выше шаблона с помощью GNUgrep:

$ grep -Po '(?<=select).*?(?=Done)' <<< ' vertical on; select blah blah blah contains all special characters including /*?&;  Done'
 blah blah blah contains all special characters including /*?&;  

Пояснение

  • (?<=word1):Соответствуетword1до текущей позиции, но не включает ее в результат.
  • .*?:Соответствует любой строке.
  • (?=word2):Соответствуетword2после текущей позиции, но не включает ее в результат.

Шаблоны (?<=word1)и (?=word2)вместе известны какобход. Эта функция не поддерживается механизмами POSIX (BRE и ERE ), поэтому вам потребуется более мощный механизм (, например PCRE ).

0
28.04.2021, 23:37

Теги

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