Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cat, grep and cut - translated to python

maybe there are enough questions and/or solutions for this, but I just can't help myself with this one question: I've got the following command I'm using in a bash-script:

var=$(cat "$filename" | grep "something" | cut -d'"' -f2)     

Now, because of some issues I have to translate all the code to python. I never used python before and I have absolutely no idea how I can do what the postet commands do. Any ideas how to solve that with python?

like image 960
dnc Avatar asked Oct 30 '14 17:10

dnc


1 Answers

You need to have better understanding of the python language and its standard library to translate the expression

cat "$filename": Reads the file cat "$filename" and dumps the content to stdout

|: pipe redirects the stdout from previous command and feeds it to the stdin of the next command

grep "something": Searches the regular expressionsomething plain text data file (if specified) or in the stdin and returns the matching lines.

cut -d'"' -f2: Splits the string with the specific delimiter and indexes/splices particular fields from the resultant list

Python Equivalent

cat "$filename"  | with open("$filename",'r') as fin:        | Read the file Sequentially                  |     for line in fin:                      |    ----------------------------------------------------------------------------------- grep 'something' | import re                                 | The python version returns                  | line = re.findall(r'something', line)[0]  | a list of matches. We are only                  |                                           | interested in the zero group ----------------------------------------------------------------------------------- cut -d'"' -f2    | line = line.split('"')[1]                 | Splits the string and selects                  |                                           | the second field (which is                  |                                           | index 1 in python) 

Combining

import re with open("filename") as origin_file:     for line in origin_file:         line = re.findall(r'something', line)         if line:            line = line[0].split('"')[1]         print line 
like image 155
Abhijit Avatar answered Oct 03 '22 03:10

Abhijit