This week's book giveaway is in the Java in General forum.
We're giving away four copies of Think Java: How to Think Like a Computer Scientist and have Allen B. Downey & Chris Mayfield on-line!
See this thread for details.
Win a copy of Think Java: How to Think Like a Computer Scientist this week in the Java in General forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Get the exact string - not the entire line using grep

 
yuga devi
Greenhorn
Posts: 22
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,


Is there any command in unix, to grep the exact word from a file, not the entire line. I have tried using grep -w, but it returns the entire line.

For ex, my file consists of

Log14534|0A353C0B.4A9282E3.00012623.00002EBE|[color=red]123456789|START TRANSACTION|host1|Mon Aug 24 08:56:27 EDT 2009|[/color]

In this, i want to grep, dynamically passing the unique no "123456789" and need to ge the word, "START TRANSACTION".

Please help.
-- Yuga
 
yuga devi
Greenhorn
Posts: 22
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi, -sorry for the confusion in the highlighted color


Is there any command in unix, to grep the exact word from a file, not the entire line. I have tried using grep -w, but it returns the entire line.

For ex, my file consists of

Log14534|0A353C0B.4A9282E3.00012623.00002EBE|123456789|START TRANSACTION|host1|Mon Aug 24 08:56:27 EDT 2009|

In this, i want to grep, dynamically passing the unique no "123456789" and need to ge the word, "START TRANSACTION".

Please help.
-- Yuga


 
Ulf Dittmer
Rancher
Posts: 42967
73
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
grep is line-oriented - it can't return partial results. But you can pipe its output into another tool -like sed or awk- that can extract parts of lines.
 
Stefan Wagner
Ranch Hand
Posts: 1923
Linux Postgres Database Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
yuga devi wrote:Log14534|0A353C0B.4A9282E3.00012623.00002EBE|123456789|START TRANSACTION|host1|Mon Aug 24 08:56:27 EDT 2009|

In this, i want to grep, dynamically passing the unique no "123456789" and need to ge the word, "START TRANSACTION".


egrep is the extended grep to match regular expressions.
-o is a switch to output only matching parts.

I understood that you search for 12..9 and want the next string as result.


The pipesymbol | has to be masked, because egrep would else threat it as OR.

Result: 123456789|START TRANSACTION|
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic