Как извлечь текст betwenn 'title = "Id:' и '' 'strings.Удаление текста с помощью sed или awk
Мой сценарий:
#! /bin/sh
S='<TD WIDTH="15%"><a title="Id: A LA UNE HD" class="A3"></a></TD>'
fn_ExtractData() {
local DataField="$(printf %s "$1" | sed -n -e '/'"$2"'/,/'"$3"'/p')"
#local DataField="$(printf %s "$1" | grep -oP '(?<='"$2"').*?(?='"$3"')')"
printf '%s' "$DataField"
}
ptr1='title="Id: '
ptr2='"'
rslt="$(fn_ExtractData "$S" "$ptr1" "$ptr2")"
echo "$rslt"
exit
выход ожидается:
A LA UNE HD
без передней или задней пробелов.
С наилучшими пожеланиями. PS. У меня уже есть рабочая команда, использующая grep.
В написанном вами сценарии используются функции, которые присутствуют только в bash, а не в традиционной оболочке Bourne. Таким образом, строка shebang должна быть '#!/bin/bash' вместо '#!/Бен/sh'. –
Кроме того, вместо 'printf% s" $ 1 "| независимо от того, вы можете просто сделать что-нибудь <<< "$ 1" '. Строка '<<<' * string * называется [here-string] (http://www.gnu.org/software/bash/manual/html_node/Redirections.html#Here-Strings). –
Извините за отложенный комментарий, но то, что вы предлагаете, относится к bash, в моем случае я использую sh not bash. – user3072470