Разбор текстового файла журнала приложения в массив.
Итак, вот в чем проблема. Я пытаюсь получить массив установленных приложений и версий.
Пока что я обнаружил, что могу запустить эту команду:
system_profiler SPApplicationsDataType > log.txt
Который даст мне текстовый файл в следующем формате:
Applications:
MacTubes:
Version: 3.1.5
Obtained from: Unknown
Last Modified: 9/15/12, 2:41 AM
Kind: Universal
64-Bit (Intel): No
Location: /Volumes/Storage/MacTubes.app
Boom:
Version: 1.6
Obtained from: Identified Developer
Last Modified: 10/12/12, 3:24 AM
Kind: Intel
64-Bit (Intel): No
Signed by: Developer ID Application: Global Delight Technologies Pvt. Ltd, Developer ID Certification Authority, Apple Root CA
Location: /Volumes/Storage/Boom.app
Get Info String: 1.6 Copyright © 2008 - 2012, Global Delight Technologies Pvt. Ltd.
World of Goo:
Version: 1.30
Obtained from: Unknown
Last Modified: 2/8/10, 8:43 AM
Kind: Universal
64-Bit (Intel): No
Location: /Volumes/Storage/Misc/World of Goo.app
Get Info String: 1.30, Copyright © 2008 2D Boy LLC
VZAccess Manager:
Version: 4.3.0
Obtained from: Unknown
Last Modified: 12/17/09, 8:48 PM
Kind: Universal
64-Bit (Intel): No
Location: /Volumes/Storage/Misc/VZAccess Manager.app
Get Info String: VZAccess Manager 4.3.0 Copyright © 2000-2008 Smith Micro Software, Inc.
ColorSync:
Obtained from: Unknown
Last Modified: 10/9/00, 12:00 PM
Kind: Classic
Location: /Volumes/Storage/Misc/System Folder/Control Panels/ColorSync
AppleTalk:
Obtained from: Unknown
Last Modified: 10/1/96, 12:00 PM
Kind: Classic
Location: /Volumes/Storage/Misc/System Folder/Control Panels/AppleTalk
Я хочу иметь возможность взять имя приложения и номер версии и сохранить их как-нибудь желательно в массиве. Я не уверен, как с чего начать, так как все записи выглядят одинаково для меня? Мне нужно также игнорировать записи без номеров версий.
1 ответ
Решение
Вот скрипт Awk, который даст вам выходной формат, который вы упомянули:
/^ {4}.+:$/ {
sub(/^ {4}/, "", $0)
last_application = $0
}
/^ +Version:/ {
sub(/^ +Version: /, "", $0)
print last_application " " $0
}
Если вы сохраните его как script.awk
Вы можете запустить
awk -f script.awk log.txt
чтобы получить вывод, как
MacTubes: 3.1.5
Boom: 1.6
World of Goo: 1.30
VZAccess Manager: 4.3.0
Это было проверено с /usr/bin/awk
OS X 10.9.0.