Hello, I currently have the following python code:

#usr/bin/python
import os

variable=raw_input('Search for this string: ')
os.system("grep $variable sample.txt")

Basically what I want to do is to grep a string found in the text file "sample.txt" When I run the code, it just hangs. How can I make it so that grep accepts the variable?

first: Why shell out to the system to get pattern matching when python offers the re package?
second: call it like this:

os.system("grep %s sample.txt"%variable)

And you have to supply the path unless sample.txt is in your PYTHONPATH.

os.system("grep %s ./sample.txt" % variable)  ## current directory

griswolf, thank you so much. However, how can I make it so it searches for an exact phrase (you vs. you're).

Also, I am unfamiliar with the re package. Looks like i'll have to run a google search.

I would do the search myself as for me Python is more powerful in many cases as regular expression language, which is like code language.

How ever, as they say: "Somebody likes the daughter, somebody else the mother."

Here my 5 minute code with text from above link of re documentation:

filename="sample.txt"
variable=raw_input('Search for this string: ').lower()

res= [line for line in open(filename) if variable in line.lower()]

for i in res:
      print i,
      print '-'*20
""" Output: (text file from re module documentation)
Search for this string: re.match
>>> re.match("c", "abcdef")  # No match
--------------------
    result = re.match(pattern, string)
--------------------
    The compiled versions of the most recent patterns passed to re.match(), re.search() or re.compile() are cached, so programs that use only a few regular expressions at a time needn?t worry about compiling regular expressions.
--------------------
re.match(pattern, string[, flags])¶
--------------------
class re.MatchObject¶
--------------------
        >>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist")
--------------------
        >>> m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcolm Reynolds")
--------------------
        >>> m = re.match(r"(..)+", "a1b2c3")  # Matches 3 times.
--------------------
        >>> m = re.match(r"(\d+)\.(\d+)", "24.1632")
--------------------
        >>> m = re.match(r"(\d+)\.?(\d+)?", "24")
--------------------
        >>> m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcolm Reynolds")
--------------------
# Error because re.match() returns None, which doesn't have a group() method:
--------------------
    re.match(r".*(.).*\1", "718ak").group(1)
--------------------
>>> re.match('Begin (\w| )*? end', s).end()
--------------------
>>> re.match("o", "dog")  # No match as "o" is not the first letter of "dog".
--------------------
The following applies only to regular expression objects like those created with re.compile("pattern"), not the primitives re.match(pattern, string) or re.search(pattern, string).
--------------------
>>> re.match(r"\W(.)\1\W", " ff ")
--------------------
>>> re.match("\\W(.)\\1\\W", " ff ")
--------------------
>>> re.match(r"\\", r"\\")
--------------------
>>> re.match("\\\\", r"\\")
--------------------
>>> """