如何提取'title =「Id:'和'''字符串之間的文本。使用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 shell。因此,shebang行應該是'#!/bin/bash'而不是'#! /斌/ sh'。 – 2014-12-07 01:47:18
此外,而不是'printf%s「$ 1」|無論如何,你可以做任何<<<「$ 1」'。 '<<<'* string *構造被稱爲[here-string](http://www.gnu.org/software/bash/manual/html_node/Redirections.html#Here-Strings)。 – 2014-12-07 02:11:56
對不起,延遲的評論,但你的建議是特定於bash,在我的情況下我使用sh不bash。 – user3072470 2014-12-07 08:06:23