我试图检查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);
答案 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()
执行从bytes
到str
的转换。然后,我们使用.split('\n')
将字符串拆分为多行。我们现在可以使用for循环遍历这些行,并询问"PTR"
是否是任何行的子字符串。如果是,请将相应的行写入文件。请注意,如果多行包含"PTR"
,则它们都将被写入文件,而不会分隔换行符。