Grep Not Working After Changing Variable

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

Neapolitan23Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
ozoConnect With a Mentor Commented:
Try
string=${1/:/\\|}
0
 
simon3270Connect With a Mentor Commented:
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
 
ozoCommented:
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
 
Neapolitan23Author Commented:
Dude, you are amazing. Thanks!
0
 
Neapolitan23Author Commented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.