この単純なgrep / sedスクリプトが機能しない理由[閉じる]

この単純なgrep / sedスクリプトが機能しない理由[閉じる]

次の行を持つ変数があります。

iBMC=277

次のように一致させようとしています。

BMC="$(echo "$allnow" | grep iBMC=[0-9] | sed 's/iBMC=//g')"

これによりBMCが空になります。次のように見えますbash -x

++ grep 'iBMC=[0-9] '
++ sed s/iBMC=//g
+ BMC=

また、次の行など、いくつかの項目をさらに一致させる必要があります。

Name="$(echo "$allnow" | grep stringName= | sed 's/stringName=//g')"

しかし、結果も空です。これは$allnow

QQ1=0999999
QQ2=00aaaaa
RR=yes
GG=no
stringName=skolan8
sTitle=
iBMC=277
L3-cache="8 MB"
Minne="16 GB"    

ベストアンサー1

grepを使用する必要はありません。 (おそらく情報量が多く、パフォーマンスの問題が原因である可能性がありますが、変数に格納されているデータではないようです)。

BMC="$(echo "${allnow}" | sed -e '/iBMC=[0-9]/!d' -e 's/iBMC=//;q' )"

おすすめ記事