problem using sed to match a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting problem using sed to match a string
# 1  
Old 10-02-2011
problem using sed to match a string

Hi There!

I'm stuck with a problem trying to output some sections of a rss feed to my conky program using curl and sed.

The rss feed is for tide times and I wish to output the times but not the rest to the conky desktop. To do this I need to pull out the four instances of times that are in the format of '00:00'. Since the digits will vary I have to match the sequence of two digits followed by a colon followed by two digits. This is what I tried so far:

Code:
#RSS Setup
URI=http://www.tidetimes.org.uk/southampton-tide-times.rss #URI of RSS Feed
LINES=1 #Number of headlines

#Environment Setup
EXEC="/usr/local/bin/curl -s" #Path to curl
TODAY=`date +%Y%m%d`
#Work Start
$EXEC $URI | grep description |\
sed -e 's/\([0-9]{2}:[0-9]{2}\)*/(&)/'

I have to admit my knowledge of sed is a bit shaky and the above has outputted a lot of gibberish. Any suggestions as to how I might pull out the four instances of the tide times in the format '00:00'?
# 2  
Old 10-02-2011
Not the best solution I'm sure ...
Code:
curl -s http://www.tidetimes.org.uk/southampton-tide-times.rss | grep description | sed -n "s/.*\([0-9][0-9]:[0-9][0-9]\)/\1/;s/\([0-9][0-9]:[0-9][0-9]\).*$/\1/p"

# 3  
Old 10-02-2011
Hmmm, thanks for that. It partially works - it pulls out the last time in the sequence but not the three times before. Sounds like it's going in the right direction though...
# 4  
Old 10-02-2011
One solution using Perl:

Code:
$
$ curl -s http://www.tidetimes.org.uk/southampton-tide-times.rss | grep description | perl -lne 'print $1 while (/(\d\d:\d\d)/g)'
03:16
09:15
15:44
21:43
$
$

Or if you want it to be a bit more descriptive:

Code:
$
$ curl -s http://www.tidetimes.org.uk/southampton-tide-times.rss | grep description | perl -lne 'print $1 while (/(\d\d:\d\d.*?)&/g)'
03:16 - High Tide
09:15 - Low Tide
15:44 - High Tide
21:43 - Low Tide
$
$

# 5  
Old 10-03-2011
Ok thanks durden_tyler I forgot about the power of perl - it is a more elegant solution. That said the sed thing will still bother me for a bit.

Also I've realised I need to do a bit more work yet. In order to present the data in conky more flexibly I have realised that I need to execute the script in conky for each instance of tide time - that is separately. I suspect I will need to create a variable that can be passed from each of the lines in conky to the script which will have a perl loop that loops to the specific instance of tide time based on the passed variable. Looks like a bit of mugging up on perl may be required! Thanks again.

---------- Post updated at 10:26 AM ---------- Previous update was at 08:32 AM ----------

I'm a dunderhead. I can use tail and head to output the specific line of course. Problem solved.

Thanks again for the help.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed - print only the chars that match a given set in a string

For a given string that may contain any ASCII chars, i.e. that matches .*, find and print only the chars that are in a given subset. The string could also have numbers, uppercase, special chars such as ~!@#$%^&*(){}\", whatever a user could type in without going esoteric For simplicity take... (1 Reply)
Discussion started by: naderra
1 Replies

2. Shell Programming and Scripting

Match exact String with sed command

I have a workaround to the problem i m posting, however if someone wants to look at my query and respond ... i will appreciate. This is in reference to this thread -> https://www.unix.com/shell-programming-and-scripting/267630-extract-between-two-exact-matched-strings.html I have data.txt as... (11 Replies)
Discussion started by: mohtashims
11 Replies

3. Shell Programming and Scripting

Need help with sed to match and replace a string

friends I am struck in a situation where I need to comment a line start with space as below in a file root@LOCALHOST * rw LOCALHOST* r I should comment second line only Any help please (16 Replies)
Discussion started by: mallak
16 Replies

4. Shell Programming and Scripting

Problem getting Nth match in sed

Hi all, I'm trying to create a sed command to get the Nth instance of an XML tag in a string, but thus far I can only ever seem to get the last one. Given an XML string: <Wrap><GrayLevel>a</GrayLevel><GrayLevel>b</GrayLevel></Wrap> I tried to do this on the command line to get each... (7 Replies)
Discussion started by: Zel2008
7 Replies

5. Shell Programming and Scripting

Sed:- Supported variable replacement after string match?

Hi All, I am trying to replace the variable in the file after the particular match string. It is being replaced if i hardcode the value and with use of "&" with sed. sed -e "s/URL./& http:\\localhost:7223/g" But when am trying to pass the variable it is failing. I tried multiple... (9 Replies)
Discussion started by: sharsour
9 Replies

6. Shell Programming and Scripting

sed pattern match problem

Hi all, hoping this is a simple one, tried looking but just can't see the solution As an example I've got a list of words that all start Ben..... Bendicks Benefiber Ben Benylin I need to only change the line Ben with Ben 10, ignoring the other lines. I tried the following ... (1 Reply)
Discussion started by: mrpugster
1 Replies

7. Shell Programming and Scripting

match string exactly with awk/sed

Hi all, I have a list that I would like to parse with awk/sed. The list is contains entries such as: JournalTitle: Biochemistry JournalTitle: Biochemistry and cell biology = Biochimie et biologie cellulaire JournalTitle: Biochemistry and experimental biology JournalTitle: Biochemistry and... (6 Replies)
Discussion started by: euval
6 Replies

8. Shell Programming and Scripting

sed to match only exact string only in all occurences

Dear Friends, Anybody knows how to match exact lines only in multilinear. Input file: apple orange orange apple apple orange Desired output: fruit orange apple fruit i used the command (1 Reply)
Discussion started by: vasanth.vadalur
1 Replies

9. Shell Programming and Scripting

problem with sed while replacing a string with another

Hi, I have a line something like this sys,systematic,system I want to replace only the word system with HI I used sed for this as below echo sys,systematic,system | sed 's/system/HI/' but I got output as sys,HIatic,system I wanted output as sys,systematic,HI Please tell me... (9 Replies)
Discussion started by: friendyboy
9 Replies

10. Shell Programming and Scripting

sed problem - replacement string should be same length as matching string.

Hi guys, I hope you can help me with my problem. I have a text file that contains lines like this: 78 ANGELO -809.05 79 ANGELO2 -5,000.06 I need to find all occurences of amounts that are negative and replace them with x's 78 ANGELO xxxxxxx 79... (4 Replies)
Discussion started by: amangeles
4 Replies
Login or Register to Ask a Question