Re: Yahoo! Groups: Welcome to sed-users. Visit today!
Luigi Assom <[email protected]>
| Newsgroups | gmane.editors.sed.user |
|---|---|
| Message-ID | <CAEiLF=soGYuJ-WiQwTCRcO9dYMo-ugBsu=Q0J1yFc+GMESuE2g@mail.gmail.com> |
Thank you Afive too :) I was finally able to write this syntax which worked for me: first I extract url and I save it on a second file: sed -n -e 's/\(<a[^h]*href="\)\([^"]*\)"\([^>]*>\)/\2/g; p' /Users/gg4u/prova4.txt > /Users/gg4u/prova5.txt then I clean out all others html tag and save it on a third file: sed -e 's/<[^>]*>//g' /Users/gg4u/prova5.txt > /Users/gg4u/prova6.txt A question: I have several several source files which I want to process in batch, and I want to save only the final results (without saving intermediate file..) so from list /Users/.../prova1,2,3,...,6.txt save the results as /Users/.../provaa,b,c,d,...txt Which way could I use to automate ? I could export list of file to do, but how to use it in batch from the terminal? On Thu, Apr 26, 2012 at 7:55 PM, Afive Ninethreeohthree < [email protected]> wrote: > > > --- In [email protected], Joe Gain <joe.gain@...> wrote: > > > > Hi Luigi, > > > > you need to take the time to look at how regular expressions are > > built. When you are only copying an pasting it's very frustrating, > > because you can't understand why something happens. > > > > The first chapter in the regular expressions book from O'Reilly is a > > really good start. > > > here are some links to aid you in your learning (first is best,in my > opinion) > > sed --general-- > > http://linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/index.html > > http://pubs.opengroup.org/onlinepubs/007904875/utilities/sed.html > > --regex stuff-- > > http://tldp.org/LDP/abs/html/regexp.html > > http://www.regular-expressions.info/tutorial.html > > -------------------------- > > the linuxtopia(1st link) I found to be really helpfull, and easy to > understand. > > ------from- > --------------a5' > ----------------------------------------------------- > > > > > > On Wed, Apr 25, 2012 at 8:06 PM, Luigi Assom <luigi.assom@...> wrote: > > > Joe, Cameron, thank you for your help! > > > > > > I did not know sed and tr command, they are totally new and the syntax > > > really complex, and i don't know perl as well. I did not understand > what > > > you mean exactly, but I tried to copy the sytax you sent, barely as it > is.. > > > the only thing which worked a bit seems to be this: > > > sed -n -e 's/\(<a[^h]*href="\)\([^"]*\)"\([^>]*>\)/\2/g; p' > > > > > > so I was able to place the url inside the <a> tag outside which is > good :) > > > I could not split end of lines, because it is long text with no "\n" > > > characters. > > > > That's good if you have no newline characters. Sed is a _s_treem > _ed_itor! > > > > That's right, I would try and remove the surrounding tag (and > > attributes) from the text that you want which is inside a tag. And > > then remove all the other tags. > > > > Perl is good because it gives you more control over your data. You can > > also learn some basic perl pretty quickly. > > > > > > > > I just need to strip out all the other html tags (I don't need them) > and > > > keep only plain text outside the tags. > > > > > > so I will have a file like > > > url texttext text text text text url text text text text text > > > and then I should be ok to handle it. > > > > > > Maybe is there any GUI interface to use sed on mac? > > > thank you for your help! > > > > I don't know of any, maybe there is something online- a web > > application, but I don't know. > > > > > > Luigi > > > > > > On Wed, Apr 25, 2012 at 12:14 AM, Cameron Simpson <cs@...> wrote: > > > > > >> Joe has the truth here. I'm just adding a few remarks. > > >> > > >> On 24Apr2012 13:05, Joe Gain <joe.gain@...> wrote: > > >> | one of sed's problems is dealing with newline characters > > >> > > >> Remark: specificly because it deals with a line at a time. > > >> > > >> | and you have > > >> | your html anchor tags split over new lines. There's probably a smart > > >> | way to overcome this using sed (and sed's line buffer), but it's not > > >> | an easy alternative. > > >> | > > >> | I think the best way for you is to: > > >> | > > >> | 1. remove all the new line characters,or at least don't split tags > > >> | with new lines (there are many ways to do this, depending on which > > >> | version of sed you are using, could be as easy as # sed -n -e > > >> | 's/\n//g; p' data.html) > > >> > > >> Or, not using sed: > > >> > > >> ( tr -d '\012' < data.html ; echo ) | sed other-sed-work-now.... > > >> > > >> This removes all the newlines using tr, then adds one at the end with > > >> echo, thus putting all the text on a single line. > > >> > > >> personally I'd trn newlines into spaces, otherwise a word break > across a > > >> line like this: > > >> > > >> <p> some words > > >> here</p> > > >> > > >> would become > > >> > > >> <p> some wordshere</p> > > >> > > >> So: > > >> > > >> ( tr '\012' ' ' < data.html ; echo ) | sed other-sed-work-now.... > > >> > > >> Remember, sed is not your only tool. > > >> > > >> | 2. remove the surrounding tags from the text that you want in your > > >> | anchor attributes with something like: > > >> | sed -n -e 's/\(<a[^h]*href="\)\([^"]*\)"\([^>]*>\)/\2/g; p' > > >> > > >> I have my concerns here, specificly the "[^h]". It will match "<a > href" > > >> as intended, but it will also match all sorts of other undesired > things. > > >> > > >> <a *href= > > >> > > >> is more reliable, matching spaces. It does presume no TAB characters. > > >> > > >> I would be inclined to use even more tr at the outset, to hammer the > > >> text flatter: > > >> > > >> ( tr '\011\012' ' ' < data.html ; echo ) | tr -s ' ' | sed ... > > >> > > >> So: > > >> - turn newlines and TABs into spaces > > >> - turn multiple spaces into a single space > > >> > > >> That way you can write patterns like this: > > >> > > >> <a href= > > >> > > >> without having to cope with more than one space; it makes the regexps > > >> much easier to write and read. > > >> > > >> Cheers, > > >> -- > > >> Cameron Simpson <cs@...> DoD#743 > > >> http://www.cskk.ezoshosting.com/cs/ > > >> > > >> My venus fly trap is higher up the food chain than I am. > > >> - simon@... (Simon Klyne) > > >> > > > > > > > > > > > > -- > > > Luigi Assom > > > > > > Skype contact: oggigigi > > > > > > > > > [Non-text portions of this message have been removed] > > > > > > > > > > > > ------------------------------------ > > > > > > -- > > > Yahoo! Groups Links > > > > > > > > > > > > > > > > > -- > > joe gain > > > > jacob-burckhardt-str. 16 > > 78464 konstanz > > germany > > > > +49 (0)7531 60389 > > > > (...otherwise in ???) > > > > > > > ------------------------------------ > > -- > Yahoo! Groups Links > > > > -- Luigi Assom Skype contact: oggigigi [Non-text portions of this message have been removed]