0

system_profilerコマンドを使用して、Mac からシステム情報を取得して印刷しようとしています。私は情報をうまく取得できますが、各項目には先頭​​のスペースと末尾の改行があります (私は思います)。問題は、末尾の改行 (またはそこにあるもの) です。私が使用しているコマンドの1つの例を次に示します。

system_profiler SPHardwareDataType | awk -F: '/Processor Speed/ {gsub(/^[ \t]+|[ \n]+$/, "", $2); print $2}'

結果は次のとおりです。

2.5 GHz

ここには表示されませんが、最後に改行の原因となるある種の文字があります。上記の gsub は、結果の先頭にあるスペースを正しく削除しますが、改行を削除するために考えられるすべてのことを試みましたが、何も機能しませんでした。

改行の動作を確認するにはsystem_profiler > output、ターミナルから実行し、好みのテキスト エディターで出力ファイルを開き、非表示の文字を表示します。

取得したこの情報を使って最終的にやろうとしているのは、TextExpanderスニペットを使用して基本的なコンピューター情報を出力することです。すべてのスニペットを正しくセットアップして実行していますが、上記で説明した改行文字に問題があります。

現在の出力は次のとおりです。

Model:  MacBookPro9,2

OS Version: Mac OS X
 10.8.3
 (12D78
)
Processor:  2.5 GHz
  Intel Core i5

Graphics:  Intel HD Graphics 4000
  512 MB

Storage:  APPLE SSD SM128E Media

Memory:  8 GB

そして、これが私が望むものです:

Model: MacBookPro9,2
OS Version: Mac OS X 10.8.3 (12D78)
Processor: 2.5 GHz Intel Core i5
Graphics: Intel HD Graphics 4000 512 MB
Storage: APPLE SSD SM128E
Memory: 8 GB

TextExpander を使用すると、任意のシェル スクリプトを実行できるので、他の方法で必要な機能を取得できる場合は、喜んでそれを使用します。(つまり、私はいくつかの検索を行い、sedとりわけ言及されているのを見てきましたが、シェルスクリプトについては本当に何も知りません)。

ありがとう!

4

2 に答える 2

0

print改行を追加します。

printf改行が必要ない場合は、代わりに を使用します。

system_profiler SPHardwareDataType | awk -F: '/Processor Speed/ {
    gsub(/^[ \t]+|[ \n]+$/, "", $2)
    printf "%s", $2
}'

ここには表示されませんが、最後に改行の原因となるある種の文字があります。

このようなことを示すために、私はcat -vet, vizを使用します:

% system_profiler SPHardwareDataType | awk -F: '/Processor Speed/ {gsub(/^[ \t]+|[ \n]+$/, "", $2); print $2}' | cat -vet
2.13 GHz$
于 2013-03-17T21:14:53.440 に答える
0

先頭のスペースを取り除くために、別のフィールド セパレータを使用してみてください。

system_profiler SPHardwareDataType | awk -F': ' '/Processor Speed/{print $2}'
于 2013-03-17T21:16:15.853 に答える