bashを使用してhtmlタグ内のファイルを置き換える

bashを使用してhtmlタグ内のファイルを置き換える

HTMLファイルがあり、段落要素()内のテキストを<p>同じ大文字に置き換える必要があります。<p>hi</p><p>HI</p>

x=`cat $1 | grep -o '<p>.*</p>' | tr '[:lower:]' '[:upper:]'`
var2=`echo $x`
headerremove=`grep -o '<p>.*</p>' $1`
var3=`echo $headerremove`
echo $var2
echo $var3
sed 's/$var3/$var2/g' "$1"

Input
<h1>head</h1>
<p>hello</p>

Output
<p>HELLO</p>

期待どおりに動作しません。また、段落要素を除くすべてのタグやその子要素など、他のすべての詳細を削除する必要があります。

ベストアンサー1

xmllint+sed解決策:

xmllint --html --xpath "//p" input.html | sed 's/>[^<>]*</\U&/'

出力:

<p>HELLO</p>

おすすめ記事