Solved

Grep Not Working After Changing Variable

Posted on 2013-05-10
5
320 Views
Last Modified: 2013-05-11
From the command line, cat test | grep 'hello' works. But not when I change it within my script. Basically, trying to resolve an issue is user does a grep without using the ' (needed for multiple search).

I'm trying to manipulate grep so that this command would work: bash run hello:new

#!/bin/bash

if [ -n "$1" ]
then
  string=`echo "'${1/:/\\|}'"`;
  echo $string;
  cat test | grep $string;
fi

Open in new window

0
Comment
Question by:Neapolitan23
  • 2
  • 2
5 Comments
 
LVL 84

Accepted Solution

by:
ozo earned 250 total points
ID: 39157642
Try
string=${1/:/\\|}
0
 
LVL 19

Assisted Solution

by:simon3270
simon3270 earned 250 total points
ID: 39157768
I don't think you need either the single quotes or the backslashes.  I just replaced the middle section with:
    string=${1//:/|}
    echo $string
    cat test | egrep "$string"

Open in new window

Note the "//" after the 1 in the first line - this replaces all colons with vertical bars, not just the first one (if there is more than one).  Also the "egrep" (or "grep -E" if you prefer), which is needed to search for these multiple strings.
0
 
LVL 84

Expert Comment

by:ozo
ID: 39157773
Also,
 cat test |
is a Useless Use Of Cat when you can do
 grep $string < test
or
 grep $string  test


Even easier, you might
egrep $1
and call the script with  'peter|chris' instead of peter:chris
0
 

Author Comment

by:Neapolitan23
ID: 39157913
Dude, you are amazing. Thanks!
0
 

Author Closing Comment

by:Neapolitan23
ID: 39157922
ozo: Your solution worked. And it works for multiple search even with regular grep.
simon3270: Your solution worked as well. The added value here was adding the extra / so that it can support multiple replace of :.

Very cool. And thanks to you both!
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

The following is a collection of cases for strange behaviour when using advanced techniques in DOS batch files. You should have some basic experience in batch "programming", as I'm assuming some knowledge and not further explain the basics. For some…
Utilizing an array to gracefully append to a list of EmailAddresses
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now