Sponsored Content
Full Discussion: Date substring from a string
Top Forums Shell Programming and Scripting Date substring from a string Post 302933616 by Don Cragun on Saturday 31st of January 2015 02:28:37 PM
Old 01-31-2015
Quote:
Originally Posted by bigsanch
If the string is allways the same structure, then you can do something like this:

Code:
string1='a.sh start time is Fri Jan  9 17:17:33 CST 2015';
string1=${string1%* CST 2015}
string1=${string1##* }

string2='a.sh start time is Fri Jan  9 17:17:33 CST 2015';
string2=${string2%* CST 2015}
string2=${string2##* }

clear && echo $string1 && echo "" && echo $string2

This will probably work for about half of a year's input assuming that all lines are in exactly the same format and that the CST is referring to US Central Standard timezone. It won't work when dayligth savings time is in effect. And, of course, it will only work for dates in 2015.

The following modifications should work year around for the sample input provided in 2015:
Code:
string1='a.sh start time is Fri Jan  9 17:17:33 CST 2015';
string1=${string1%* C?T 2015}
string1=${string1##* }

string2='a.sh start time is Fri Jun 12 17:17:33 CDT 2015';
string2=${string2%* C[DS]T 2015}
string2=${string2##* }

clear && echo $string1 && echo "" && echo $string2

The ? will match any character; the [DS] will match an uppercase D or an uppercase S. I will leave the modifications needed to recognize additional years as an exercise for the reader. If some of the dates being processed come from other timezones, I would suggest using a different approach.

Quote:
Originally Posted by senhia83
try

Code:
awk 'match($0, /([0-9]+):([0-5]?[0-9]):([0-5]?[0-9])/, ary) {print ary[1]":"ary[2]":"ary[3]}' yourfile

You seem to be mixing the awk match() and split() functions. But, I get a syntax error when I try this code. The match() function takes two arguments (string to be matched and an ERE to match) and sets various awk variables to indicate whether or not a match was found and, if there was a match, the starting position of the match and the length of the match. The awk script I suggested in post #8 in this thread uses match() this way.

The awk split() function creates an array of values corresponding to values separated by field separators specify by an ERE. With the ERE you use, the desired date would not appear in the array at all since the ERE selects the date as the field separator.
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Programming

can i get a substring from a string?

for example, the string a is "abcdefg", can i get a substring "bcd" (from ato a) from string a? thank you (4 Replies)
Discussion started by: dell9
4 Replies

2. Shell Programming and Scripting

getting a substring from a string

hi all, I am trying to extract SUBSTRINGS out of a string using ksh. The string is "SAPR3K.FD0.FA.TJ.B0010.T050302" I tried using a= `expr substr $stringZ 1 2` which is giving me a syntax error, donno why?? any ideas why its not working?? I also tried echo "welcome" | awk '{... (3 Replies)
Discussion started by: maradona
3 Replies

3. UNIX for Dummies Questions & Answers

How to get the substring from the string

Hi All, Can anybody help me to get the substring from the given string. (3 Replies)
Discussion started by: Anshu
3 Replies

4. Shell Programming and Scripting

get substring from string

Hi All, Problem Description: XML_REP_REQUEST=`CONCSUB "$LOGIN" "SQLAP" "$RESP_NAME" "$USRNM" WAIT="Y" "CONCURRENT" "APPLICATION_SHORT_NAME" "CP_SHORT_NAME"` echo Report Request: $XML_REP_REQUEST --to print value in log file While execution the value of 'XML_REP_REQUEST' is 'Prozess... (5 Replies)
Discussion started by: suman.g
5 Replies

5. Shell Programming and Scripting

Help with string and substring also I/O

#!/bin/sh PRINTF=/usr/bin/printf PASSWD=/etc/passwd $PRINTF "Enter a UserID\n" read USERID if ; then $PRINTF "$USERID does not exist, please contact IT service\n" exit 1 fi USERHOME=`grep "^$USERID:" $PASSWD | awk -F : '{print $6}'` USERSHELL=`grep "^$USERID:"... (1 Reply)
Discussion started by: ikeQ
1 Replies

6. Shell Programming and Scripting

How to extract a substring from a string

Hi, I have an input string say for example: ABC,DEF,IJK,LMN,...,XYZ The above string is comma delimited. Now I have to extract the last part after the comma i.e. XYZ. :b: (3 Replies)
Discussion started by: bghosh
3 Replies

7. UNIX for Dummies Questions & Answers

substring a date

Hello I am trying to substring the month in a date string I am getting an error " bad substitution" #!/bin/ksh INPUT='20121225' echo ${$INPUT:5:2} exit 0 Very new in unix. Thanks. Please use code tags next time for your code and data. (9 Replies)
Discussion started by: lillyt2006
9 Replies

8. Shell Programming and Scripting

Remove a substring from string

Good morning friends, how can i remove a string with linux scripting from a file? In specific i want to remove from a file all the tweet names and links eg @aerta and links such as http://dst.co/pIiu3i9c Thanx!!! (4 Replies)
Discussion started by: paladinaeon
4 Replies

9. UNIX for Dummies Questions & Answers

Get date, change format and substring?

I'm somewhat new to shell scripting and I have a file that had a date in it. /somedirectory/datefile.txt I want to take the date in the file: 2013-06-12 and change the formate to 20130612 and have it as a variable/parm I also what to take that date 2013-06-12 and substring it. I know... (3 Replies)
Discussion started by: MJCreations
3 Replies

10. Shell Programming and Scripting

Extracting substring within string between 2 token within the string

Hello. First best wishes for everybody. here is the input file ("$INPUT1") contents : BASH_FUNC_message_begin_script%%=() { local -a L_ARRAY; BASH_FUNC_message_debug%%=() { local -a L_ARRAY; BASH_FUNC_message_end_script%%=() { local -a L_ARRAY; BASH_FUNC_message_error%%=() { local... (3 Replies)
Discussion started by: jcdole
3 Replies
All times are GMT -4. The time now is 12:42 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy