私は、VMwareがでテストする必要はありませんので、私が代わりにiTunes
を使用します。
最も簡単な方法は
基本的に、私はコンマに2つのフィールド間NULを翻字するtr
を使用して、その後、すべての余分なものを取り除くためにmdls
からの生の出力を指定しています。これはシンプルですが、それ以降のスペースは与えませんが、十分に良いかもしれません。
mdls -name kMDItemFSName -name kMDItemVersion -raw /Applications/iTunes.app | tr '\0' ','
iTunes.app,12.4.1
少しハーダー
、そしてより正確な
tr
とNULsを交換することはOKですが、tr
だけ「1対1」置換を行いますので、あなたは、カンマとスペースの両方を取得することはできません。 sed
は単一のNULをカンマと空白で置き換えることができますが、OSXではsed
のnon-GNUバージョンではあまり簡単ではありませんので、代わりにperl
を使用します。
mdls -name kMDItemFSName -name kMDItemVersion -raw /Applications/Textedit.app | perl -pe 's/\x0/, /'
TextEdit.app, 1.11
ワイルドカードバージョン
それとも、あなたはワイルドカードを使用したい場合は、私がawk
mdls -name kMDItemFSName -name kMDItemVersion /Applications/*.app | awk -F'"' '/kMDItemFSName/{n=$2} /kMDItemVersion/{print n, $2}' OFS=', '
出力
App Store.app, 2.1
Automator.app, 2.6
Calculator.app, 10.8
Calendar.app, 8.0
Carbon Copy Cloner.app, 4.1.9
Chess.app, 3.13
Contacts.app, 9.0
...
Sonos.app, 6.2.2
Stickies.app, 10.0
System Preferences.app, 14.0
TextEdit.app, 1.11
TextWrangler.app, 5.0.2
Time Machine.app, 1.3
VirtualBox.app, 5.0.24
Xcode.app, 7.3
iBooks.app, 1.5
iMovie.app, 10.1.2
iTunes.app, 12.4.1
となるだろうawk
コマンドは基本的には入力フィールドセパレータを"
に設定していて、kMDItemFSName
と表示されるたびに、2番目のフィールド(アプリケーション名)をn
として保存します。次に、kMDItemVersion
が表示されるたびに、保存された名前と2番目のフィールド(バージョン)が出力されます。 OFS(出力フィールド区切り文字)はコンマとスペースに設定されます。
awkを使用したワイルドカードバージョンは、意図した目的に必要なアプリケーション、コンマ、スペースおよび改行を提供します。他の2つのオプションは、 "AppName、AppVersion"の出力を提供した後に改行がありません。 – ordepmod