Hey guys, Looking through my book and the web and I am not having any success returning data from a search. I need to have awk search for a string and print the first field which is no problem but now its returning two options as the input data has changed. The change is reliable, I only want the first field if it ends in a regex that I have, and I only want what that regex matches to be printed. Is it possible to do this in a one liner so I don't need to construct an awk script? I suppose I could pipe it into grep and cut but that's not very sexy :) Any ideas? Thanks! jlc
>Any ideas?Sorry, jumped the gun. I search for two strings then use a printf.
On Wed, Jun 24, 2009 at 10:31:21PM +0000, Joseph L. Casale wrote:> I need to have awk search for a string and print the first field which > is no problem but now its returning two options as the input data has > changed. The change is reliable, I only want the first field if it ends > in a regex that I have, and I only want what that regex matches to be > printed. Is it possible to do this in a one liner so I don't need to > construct an awk script?What you've written is mostly incoherent and incomprehensible. Free clue: provide examples of input and expected output, including examples that will _not_ match (so no false positives occur). I'm not sure if you simply want awk '$1 ~ /regexp/ { print $1}' or something more. -- rgds Stephen
Joseph L. Casale wrote:> Hey guys, > Looking through my book and the web and I am not having any success > returning data from a search. > > I need to have awk search for a string and print the first field which > is no problem but now its returning two options as the input data has > changed. The change is reliable, I only want the first field if it ends > in a regex that I have, and I only want what that regex matches to be > printed. Is it possible to do this in a one liner so I don't need to > construct an awk script? > > I suppose I could pipe it into grep and cut but that's not very sexy :)Sed is the next tool up from grep: sed -n -e 's/.*\(regex\.*)/\1/p' will print the matching regex, so if you can expand it to match whatever you are calling a field it should work. -- Les Mikesell lesmiksell at gmail.com
Joseph L. Casale <JCasale at ...> writes:> > Hey guys, > Looking through my book and the web and I am not having any success > returning data from a search. > > I need to have awk search for a string and print the first field which > is no problem but now its returning two options as the input data has > changed. The change is reliable, I only want the first field if it ends > in a regex that I have, and I only want what that regex matches to be > printed. Is it possible to do this in a one liner so I don't need to > construct an awk script? > > I suppose I could pipe it into grep and cut but that's not very sexy :) > > Any ideas? > > Thanks! > jlc >Being an old perl hacker I have to at least suggest doing whatever you're attempting in perl. perl gives you much more powerful and flexible regular expression processing. It also makes it really simple to pull out whatever matched within the RE. Cheers, Dave