Grep and Python

how to grep a word in a file in python
python grep string from variable
python grep files in directory
call grep from python
grep python process
python grep large file
python regex
python subprocess grep

I need a way of searching a file using grep via a regular expression from the Unix command line. For example when I type in the command line:

python pythonfile.py 'RE' 'file-to-be-searched'

I need the regular expression 'RE' to be searched in the file and print out the matching lines.

Here's the code I have:

import re
import sys

search_term = sys.argv[1]
f = sys.argv[2]

for line in open(f, 'r'):
    if re.search(search_term, line):
        print line,
        if line == None:
            print 'no matches found'

But when I enter a word which isn't present, no matches found doesn't print

How can I use grep in Python?, There is a file (query.txt) which has some keywords/phrases which are to be matched with other files using cmd='grep %s my2.txt'%a  Python There is a file (query.txt) which has some keywords/phrases which are to be matched with other files using grep. The last three lines of the following code are working perfectly but when the same command is used inside the while loop it goes into an infinite loop or something(ie doesn't respond).

Concise and memory efficient:

#!/usr/bin/env python
# file: grep.py
import re, sys

map(sys.stdout.write,(l for l in sys.stdin if re.search(sys.argv[1],l)))

It works like egrep (without too much error handling), e.g.:

cat input-file | grep.py "RE"

And here is the one-liner:

cat input-file | python -c "import re,sys;map(sys.stdout.write,(l for l in sys.stdin if re.search(sys.argv[1],l)))" "RE"

What is the python equivalent of grep -v?, A regex in Python, either the search or match methods, returns a Match object or None . For grep -v equivalent, you might use: import re for line in sys.stdin: if  argv includes python file name, so variables need to start at 1 This doesn’t handle multiple arguments (like grep does) or expand wildcards (like the Unix shell would). If you wanted this functionality you could get it using the following:

Adapted from a grep in python.

Accepts a list of filenames via [2:], does no exception handling:

#!/usr/bin/env python
import re, sys, os

for f in filter(os.path.isfile, sys.argv[2:]):
    for line in open(f).readlines():
        if re.match(sys.argv[1], line):
            print line

sys.argv[1] resp sys.argv[2:] works, if you run it as an standalone executable, meaning

chmod +x

first

Using grep in python, . The last three lines of the following code are working perfectly but when the same command is used inside the while loop it goes into an infinite loop or something(ie doesn't respond). If you really want for python-style regular expressions in grep, the --perl-regex option to grep is really close. It gives you perl-style regular expression support. (Also, my favorite underused option to grep is --color=always ) – Ross Rogers Dec 17 '09 at 13:56

  1. use sys.argv to get the command-line parameters
  2. use open(), read() to manipulate file
  3. use the Python re module to match lines

What is the 'cat' command, and how can I use it?, create single or multiple files, view contain of file, concatenate files and redirect output in terminal or files. GNU Grep uses the GNU version of regular expressions, which is very similar (but not identical) to POSIX regular expressions. In fact, most varieties of regular expressions are quite similar, but have differences in escapes, meta-characters, or special operators. GNU Grep has two regular expression feature sets: Basic and Extended.

You might be interested in pyp. Citing my other answer:

"The Pyed Piper", or pyp, is a linux command line text manipulation tool similar to awk or sed, but which uses standard python string and list methods as well as custom functions evolved to generate fast results in an intense production environment.

How to port an awk script to Python, generators and yield from to build an iterator that loops through all lines and keeps a persistent count. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information. Learn more cat, grep and cut - translated to python

Home - GrepFunc.py, GrepFunc. Simple grep-like function for Python. Source at GitHub. Docs at PythonHosted.org. Install. Install GrepFunc via pip: pip install grepfunc. How to use. The grep, egrep, sed and awk are the most common Linux command line tools for parsing files. From the following article you’ll learn how to match multiple patterns with the OR, AND, NOT operators, using grep, egrep, sed and awk commands from the Linux command line.

Regular expressions, This task of searching and extracting is so common that Python has a very python grep.py Enter a regular expression: ^Author mbox.txt had 1798 lines that  GrepFunc provide a single function, grep, which imitates Unix's grep functionality, but operate on lists and variables instead of files. The function accept a single string, an iterable, or an opened file handler to search. The default return value is a list of matching strings from input.

How can I use grep in Python?, First of all, you are not iterating over the file properly. You can simply use for b in f​: without the .readline() stuff. Then your code will blow in your  Print a help message briefly summarizing command-line options, and exit. Print the version number of grep, and exit. Match Selection Options. -E, --extended-regexp. Interpret PATTERN as an extended regular expression (see Basic vs. Extended Regular Expressions ). -F, --fixed-strings. Interpret PATTERN as a list of fixed strings, separated by

Comments
  • If you really want for python-style regular expressions in grep, the --perl-regex option to grep is really close. It gives you perl-style regular expression support. (Also, my favorite underused option to grep is --color=always )
  • you should compile your regex before using the loops.
  • This has two down votes and I have no idea why. Anyone who downvoted want to leave a comment? I know you could add regex compilation etc, but I thought that would detract from the clarity of the answer. I don't think there is anything incorrect, and I've run the code, unlike some of the other answers
  • This answer was perfect for me thanks. Just another quick question how would i print if no matches were found?
  • "you should compile your regex before using the loops.", No, Python will compile and cache it on its own, it's a common myth, it's a nice thing to do for readability reasons, htough.
  • The reasonable answer to the natural question is "Because the code is part of a much larger Python script, and who wants to call out to grep in such a case?" In short, I'm glad this question is here because I'm replacing a bash script with a Python script that is hopefully easier on the system.
  • what's the difference between re.match and re.search ?
  • @OscarRyz see Nick Fortescue's top answer: "search instead of match to find anywhere in string"