次の grep コマンドを sed にパイプして要素名属性を検索し、sed の結果を name 変数に格納します。
name=$(grep -E "<element.*name=.*/>" "$F" | sed -e "s/.*<element.*name=\(.*\)\/>.*?/\1/")
サンプルデータ -
<element name="Barium"/>
望ましい出力 -
Barium
実際の出力 -
<element name="Barium"/>
sed コマンドを使用して余分な部分を削除する方法が少しわかりません。
(xmllint を使えば簡単にできるのは分かっていますが、この用途には使えません)
答え1
これには sed は必要ありません:
grep -Po '(?<=<element name=")[^"]+' <file>
または
grep -Po '<element name="\K[^"]+' <file>