Awk извлекает шаблон из имени файла для использования в переменной [duplicate]

Это делается путем делегирования событий. Событие будет привязываться к элементу-оболочке, но будет делегировано элементу селекторного класса. Вот как это работает.

$('.wrapper-class').on("click", '.selector-class', function() {
    // Your code here
});

Примечание:

Элемент-оболочка-оболочка может быть любым ex. документа, тела или вашей обертки. Упаковщик должен уже существовать.

0
задан elpavlos 21 February 2017 в 12:42
поделиться

2 ответа

Просто сделайте это в двухэтапном расширении параметра bash ТОЛЬКО , поскольку bash не поддерживает вложенное расширение параметра в отличие от zsh или других оболочек.

"${string%_*}" to разделите все после последнего появления «_» и "${tempString#*_}", чтобы отделить все от начала до первого появления «_»

string="ENCSR000ALA_endothelial_cell_of_umbilical_vein_CTCF"
tempString="${string%_*}"
printf "%s\n" "${tempString#*_}"
endothelial_cell_of_umbilical_vein

. Другой пример:

string="ENCSR000AMA_HepG2_CTCF"
tempString="${string%_*}"
printf "%s\n" "${tempString#*_}"
HepG2

Вы можете изменить эту логику для применения к каждому из имен файлов в вашей папке.

0
ответ дан Inian 18 August 2018 в 01:08
поделиться

Может использовать regex.

extract_words() {
    [[ "$1" =~ ^([^_]+)_(.*)_([^_]+)$ ]] && echo "${BASH_REMATCH[2]}"
}

while read -r from_line
do
    extracted=$(extract_words "$from_line")
    echo "$from_line" "[$extracted]"
done < list_of_filenames.txt

EDIT: я переместил «извлечение» в одну функцию bash для повторного использования и простой модификации для более сложных случаев, таких как:

extract_words() {
        perl -lnE 'say $2 if /^([^_]+)_(.*)_([^_]+)$/' <<< "$1"
}
0
ответ дан jm666 18 August 2018 в 01:08
поделиться
  • 1
    Вам не нужна подстановка команды; просто позвольте extract_words вызвать команду [[; BASH_REMATCH установлен глобально, поэтому вы можете написать extract_words "$from_line" && extracted=${BASH_REMATCH[2]}. – chepner 21 February 2017 в 14:37
  • 2
    @chepner уверен. Но только если вы используете встроенные bash regexes. Если кто-то заменяет содержимое extract_words's, например, некоторыми awk или perl (для более сложных сценариев), то потребуется замена команды. Как я уже писал, он предназначен для легкой модификации. (и потому что замена на самом деле вызывает функцию bash, она не болит): D – jm666 21 February 2017 в 15:34
  • 3
    Это проблема человека, внесшего изменения в extract_words. Я не думаю, что приспосабливать будущие изменения к коду стоит накладных расходов на развилку, где это необязательно. – chepner 21 February 2017 в 15:43
  • 4
    @chepner хорошо, справедливо. Главное, например. отвечая на вопрос ОП, как получить нужную строку. Это можно сделать с помощью bash_regexes за один проход. Весь пух до читателя ... :) – jm666 21 February 2017 в 16:19
Другие вопросы по тегам:

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