この文字列を変数に保存します。
<li class="rainbow-list-item southern disrupted " data-line-id="lul-southern" data-severity-codes="4,6,9" data-mode="national-rail">
データ重大度コードの数値を取得したいと思います。覚えておいてください:
- 値は1、2、または3文字です。
- データラインIDの長さの変更
答え1
次のことができます。
$ MYVAR='<li class="rainbow-list-item southern disrupted " data-line-id="lul-southern" data-severity-codes="4,6,9" data-mode="national-rail">'
$ echo $MYVAR | tr ' ' '\n' | awk -F= '/data-severity-codes/ {print $2}'
"4,6,9"
必要に応じて、sedを使用して「を削除し、を空白に置き換えることもできます。
$ echo $MYVAR | tr ' ' '\n' | awk -F= '/data-severity-codes/ {print $2}' | sed -e 's/"//g' -e 's/,/ /g'
4 6 9
答え2
一致演算子を使用できます=~
。
#! /bin/bash
var='<li class="rainbow-list-item southern disrupted " data-line-id="lul-southern" data-severity-codes="4,6,9" data-mode="national-rail">'
if [[ $var =~ data-severity-codes=\"([^\"]+)\" ]] ; then
echo ${BASH_REMATCH[1]}
fi
出力:
4,6,9
または、XML認識ツールを使用してください。
xmllint --xpath li/@data-severity-codes - <<< "$var</li>" \
| cut -f2 -d\"