Populate an EA from a string of text from a file

joethedsa
Contributor II

Greetings,
I'm trying to populate an EA by reading a string of text from the hidden .identity file (located in /Library/Application Support/CrashPlan) that is created when CrashPlan is installed and configured for a user. From what I can see, the user account that is configured is in the last line of the file. I need to get some of that string in an EA. The string looks something like this: "username=johnsmith@domain.edu". I only need the "johnsmith" part of the text. I believe this can be done using the cat, grep, or sed command(s) but I am not sure where to start. Any help would be much appreciated.

3 ACCEPTED SOLUTIONS

Jerneheim
New Contributor III

Hi Joe,
This might be a start.

VAR=$(cat /Library/Application Support/CrashPlan/.Identity |grep username= |sed -e 's/.*=(.*)@.*/1/'); echo "<result>$VAR</result>"

View solution in original post

mschroder
Valued Contributor

Friends of awk would probably say

#!/bin/sh
VAR=$(awk -F'[=@]' '/username/ {print $2}' bla.txt );echo "<result>$VAR</result>"

View solution in original post

Tribruin
Valued Contributor
Valued Contributor

@joethedsa , just add an if statement to check the value returned. From either option, remove the ;echo "<result>$VAR</result>" and add these lines:

if [ -z "$VAR" ]; then
    echo "<result>Not Installed</result>"
else
    echo "<result>$VAR</result>"
fi

View solution in original post

5 REPLIES 5

Jerneheim
New Contributor III

Hi Joe,
This might be a start.

VAR=$(cat /Library/Application Support/CrashPlan/.Identity |grep username= |sed -e 's/.*=(.*)@.*/1/'); echo "<result>$VAR</result>"

mschroder
Valued Contributor

Friends of awk would probably say

#!/bin/sh
VAR=$(awk -F'[=@]' '/username/ {print $2}' bla.txt );echo "<result>$VAR</result>"

joethedsa
Contributor II

@Jerneheim and @mschroder, Thank you both for your responses. If CrashPlan isn't installed on a machine, it just keeps the EA blank. Do you know what I could add to the script so instead of it coming up blank, it would read "Not Installed"?

Tribruin
Valued Contributor
Valued Contributor

@joethedsa , just add an if statement to check the value returned. From either option, remove the ;echo "<result>$VAR</result>" and add these lines:

if [ -z "$VAR" ]; then
    echo "<result>Not Installed</result>"
else
    echo "<result>$VAR</result>"
fi

joethedsa
Contributor II

@RBlount, thanks for chiming in. That did the trick!