Solved

Grep Not Working After Changing Variable

Posted on 2013-05-10
5
325 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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…
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
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…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, just open a new email message. In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…

911 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

23 Experts available now in Live!

Get 1:1 Help Now