コマンドラインからOSXコード名(Yosemite、El Capitanなど)を取得する方法はありますか?はいいいえバージョン情報を探してください(例:
sw_vers -productVersion
)10.10などを提供します。ありがとうございます!
ベストアンサー1
より簡単で信頼性の高い方法が必要であると確信していますが、少なくともwith(一致のみ印刷)と(拡張正規表現)をsed
使用してパイプを完全に削除できます。grep
-o
-E
grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf'
ただし、これはSOFTWARE LICENSE AGREEMENT FOR OS X
出力の一部も返します。コード名だけが必要な場合はsedにパイプできますが、-E
BSDのsed
悪名高いフラグを使用する逆参照は必要ありません。
grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | sed "s/SOFT.*OS X //"
個人的に、私はawk
次のアプローチを好みます。
grep -oE 'SOFTWARE LICENSE AGREEMENT FOR OS X.*[A-Z]' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | awk -F 'OS X ' '{print $NF}'
純粋なawk
ソリューション:
awk '/SOFTWARE LICENSE AGREEMENT FOR OS X/' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | awk -F 'OS X ' '{print $NF}' | awk '{print substr($0, 0, length($0)-1)}'
(他のawkプロセスに接続せずにこれを行う方法があると確信していますが、私は専門家ではありません。)