[シェルスクリプト] 空白を詰めてイコールの次の値を取得する方法
イコールの後にスペースを入れたり入れなかったりする輩がいて、単純にイコール後の値を取得できない場合も想定できるかと思います。
(それはそれで別の問題が発生しそうですが)
そういう場合を想定して、予め空白を詰めて、イコールの次の値を取得します。
始めに
Sambaの設定ファイルsmb.conf(/etc/samba/smb.conf)を例に解説したいと思います。smb.confを覗くとこんな感じで設定値が書き込まれています。
workgroup = WORKGROUP server string = Suzume ga Samba netbios name = TEST
ここではworkgroupの値を取得します。
通常通り取得する
以下のコマンドは、awk
でスペース区切りの3番目の文字を取得します。
grep "workgroup " /etc/samba/smb.conf | awk '{print $3}'
この場合、スペースの数によって値がズレてしまいます。
単純にイコールの次の値を取得すれば取得ミスは起こらないと思います。
イコールの次の値を取得する
sed
でスペースを潰して、awk
の区切り文字を=
に変えて2番目の文字を取得しています。
grep "workgroup " /etc/samba/smb.conf | sed "s/ //g" | awk -F'=' '{print $2}'
これで憂慮せずWORKGROUPが取得できるかと思います。