Parse hdiutil -plist data for specific info


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Parse hdiutil -plist data for specific info
# 1  
Old 04-17-2012
Parse hdiutil -plist data for specific info

I am trying to get the mounted size of a compressed .dmg. I can use hdiutil imageinfo -plist $imagename to get a lot of info, including what I need. The problem is that I have no idea how to parse that single piece of info into a variable (or in this case, array element). Here is what I have so far

Code:
#!/bin/bash
#first part of script which generates the array below
for i in ${DMGLIST[@]} #This array contains a list of .dmg files
	do
	hdiutil imageinfo -plist $i | #some way to parse stdout for the info and save it to a variable
	done

The info I need is in the middle of the output
Code:
	<key>Total Bytes</key>
		<integer>73400320</integer>

And I have no idea how to go about parsing through it since the string is broken up by the </key> and <integer> things. I can think of some complex, inelegant ways, but I'm sure someone here has an idea for how to do it better! Thanks!
# 2  
Old 04-17-2012
Try this (Array DMGSIZE will contain size of each .dmg file in DMGLIST):

Code:
#!/bin/bash
#first part of script which generates the array below
pos=0
for i in ${DMGLIST[@]} #This array contains a list of .dmg files
do
    DMGSIZE[pos++]=$(hdiutil imageinfo -plist $1 | awk -F"[<>]" 'a{print $3; exit}$2=="key"&&$3=="Total Bytes"{a=1}')
done

Though it may be better to generate DMGSIZE at the same time you are generating DMGLIST, ie in the bit of the script not shown.
This User Gave Thanks to Chubler_XL For This Post:
# 3  
Old 04-17-2012
Perfect. I had to change the 1 to i, but everything else works exactly. Now to look up how this works for future reference. Thanks!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parse text file using specific tags

awk -F "" '/<href=>|<href=>|<top>|<top>/ {print $3, OFS=\t}' source.txt > output.txt I'm not quite sure how to parse the attached file, but what I am trying to do is in a output file have the link (href=), name (after the <), and count (<top>) in 3 separate columns. My attempt is the above... (2 Replies)
Discussion started by: cmccabe
2 Replies

2. UNIX for Advanced & Expert Users

os x hdiutil expert needed

I am writing a script that using the "Total Bytes" field from hdiutil imageinfo -plist <file>. My intention is to get the total mounted size of a compressed dmg. It works for some images, but sometimes it doesn't seem to match up, particularly with larger (over 1 gb) images. Can anybody explain... (10 Replies)
Discussion started by: nextyoyoma
10 Replies

3. Shell Programming and Scripting

Parse and display specific columns

Hi.. I am in help of displaying this specific case. I have multiple files where i have to display accordingly. Input file ##INFO1 ##INFO2 ##INFO3 #CHROM POS INFO 57.sorted.bam 58.sorted.bam 59.sorted.bam 34.sorted.bam 55.sorted.bam... (12 Replies)
Discussion started by: empyrean
12 Replies

4. UNIX for Dummies Questions & Answers

Extracting specific info finger command

how to extract user machine name for current terminal using finger command below command gives machinename for all session , is it possible to filter it to only currernt terminal ? finger -b -p $LOGNAME | grep from (12 Replies)
Discussion started by: lalitpct
12 Replies

5. Shell Programming and Scripting

Parse out specific lines

Hello, For the life of me, I can't figure out how to extract only certain lines of a file. For example, the file contains: project.max-sem-ids privileged 1.02K - deny - system 16.8M max deny ... (2 Replies)
Discussion started by: PointyWombat
2 Replies

6. Shell Programming and Scripting

Parse a String for a Specific Word

Hello, I'm almost there with scripting, and I've looked at a few examples that could help me out here. But I'm still at a lost where to start. I'm looking to parse each line in the log file below and save the output like below. Log File AABBCGCAT022|242|3 AABBCGCAT023|243|4... (6 Replies)
Discussion started by: ravzter
6 Replies

7. UNIX for Dummies Questions & Answers

How to parse the specific data from the file

Hi, I need to parse this data FastEthernet0/9,|FastEthernet0/10,|FastEthernet0/11,FastEthernet0/13|, FastEthernet0/12,FastEthernet0/24 . and get only the value like e.g 0/24,0/11. how to do this in shell script. Thanks in Advance. (2 Replies)
Discussion started by: MuthuAlagappan
2 Replies

8. Shell Programming and Scripting

how do i parse by specific column?

I have a log file with 13 columns. The 12th column contains the status code (example 200, 404, 500, 403, etc.) I want to remove all 200 status lines. so... 1. remove all the lines in which the 12th column has a 200. 2. display only the lines in which the 12th column shows a 500. ... (2 Replies)
Discussion started by: kmaq7621
2 Replies

9. Shell Programming and Scripting

how to retrieve required specific info from the file

Hi I have a file which consists of a number in the square brackets, followed by the blank line, then several lines which describe this number. This pattern is repeated several thousands time. The number in the brackets and the decription of it is unique. For example: ASRVSERV=1241GD;... (2 Replies)
Discussion started by: aoussenko
2 Replies

10. UNIX for Dummies Questions & Answers

Extracting specific info from finger command

Hello all, my unix is bash based and the finger command output is: Login Name Tty Idle LoginTime Office amos.john Amos John pts/26 1 Dec 5 16:18 (77.100.22.07) What am trying to achieve is extract the Login (amos.john) and Name (Amos John) from this output without using awk or sed. ... (1 Reply)
Discussion started by: franny
1 Replies
Login or Register to Ask a Question