2016-07-02 5 views
1

アプリケーション名とアプリケーションバージョンの2つのライン出力の間にコンマを追加する方法を解明しようとしています。 「.APP 『OS Xターミナル:出力にコンマを追加する

ordepmod-mbp:~ ordepmod$ mdls -name kMDItemFSName /Applications/*VMware*.app -name kMDItemVersion | sed 's/[^"]*"\([^"]*\)".*/\1/' | xargs -L 2 
VMware Fusion.app 8.1.1 
VMware Horizon Client.app 4.0.1 

私は』 .APP」を交換しながら、可能な限りシンプルな存在のコマンドを続けるだろうことを使用する構文を把握することはできません。ここで

は私の現在のコードと出力されます。だから、意図した出力が(手動で編集)のようになります。

VMware Fusion.app, 8.1.1 
VMware Horizon Client.app, 4.0.1 

答えて

1

私は、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(出力フィールド区切り文字)はコンマとスペースに設定されます。

+0

awkを使用したワイルドカードバージョンは、意図した目的に必要なアプリケーション、コンマ、スペースおよび改行を提供します。他の2つのオプションは、 "AppName、AppVersion"の出力を提供した後に改行がありません。 – ordepmod

関連する問題