Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Store into variable a string that changes dynamically

Tags:

shell

sed

awk

I'm quite new unix in shell scripting so I assume I need help regarding the following issue:

I want to store into a variable a string of a log text that changes dynamically. E.x one time you run the program that creates this log, this string may be server1 and the next time server238. I have found ways to find the first occurrence of this string through sed or grep and cut. However since the log file that this software creates may differ from version to version I can't count on a specific line that contains this string. E.x one version may log "The server you are using is server98" and the next one to "Used server is server98". Is there a way through sed or awk that this string may be retrieved regardless of the log layout. Thanks in advance.

like image 796
dk13 Avatar asked Feb 07 '26 10:02

dk13


1 Answers

I'd go with:

server=$(grep -Eo 'server[0-9]+' file | head -n 1)

to find any occurrence of the word server followed by some digits, e.g. server3, server98

-E means to use Extended regular expressions (i.e. \d+ for multiple digits)

-o means only output the matching part of the string - not the whole line that contains it.

Here it is in action on OSX:

cat file
server9 
fred server98 fred
3

/usr/bin/grep -Eo 'server[0-9]+' file
server9
server98
like image 113
Mark Setchell Avatar answered Feb 09 '26 09:02

Mark Setchell



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!