使用Grep打印到文件

时间:2016-12-18 09:57:42

标签: python

我试图检查IP地址的反向查找,然后将结果写入txt文件。如何使用grep将结果写入文件?

我的剧本:

depends (\rho,[t, r, \theta, z]); depends (V, [t, r, \theta, z]);
f_contin : diff (\rho, t) + diff (\rho*r*V[r], r)*(1/r) = 0;
base : diff (V[b]*r*\rho, r) = 0;
V_sub : V[r] = V[b] + \epsilon*V[r];
subst (V_sub, f_contin);
subst (base, %o6);

1 个答案:

答案 0 :(得分:0)

在评论后编辑 要仅打印出包含字符串'PTR'的行,首先将输出拆分为行列表(每行为str),然后遍历行并检查它们是否包含'PTR' }:

import sys, os, re, shlex, urllib, subprocess 

cmd = 'dig -x %s @192.1.1.1' % sys.argv[1]

proc = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
out, err = proc.communicate()

# Convert to list of str lines
out = out.decode().split('\n')

# Only write the line containing "PTR"
with open("/tmp/test.txt", "w") as f:
    for line in out:
        if "PTR" in line:
            f.write(line)

语法的进一步说明:out返回的proc.communicate()对象不是str,而是bytes对象。 out.decode()执行从bytesstr的转换。然后,我们使用.split('\n')将字符串拆分为多行。我们现在可以使用for循环遍历这些行,并询问"PTR"是否是任何行的子字符串。如果是,请将相应的行写入文件。请注意,如果多行包含"PTR",则它们都将被写入文件,而不会分隔换行符。