关于 for 语句中的 grep "-i" 选项
about grep "-i" option in for statment
import os
f1 = open("/home/ace/Desktop/MB/shell_search/direct.txt",'r',encoding='UTF-8')
lines = f1.readlines()
lines = [line.strip() for line in lines]
for shell in lines:
os.system("cat IIS_W3C_Log.log | grep -i \"" + shell + "\" > "+shell+".txt")
-i 选项不起作用...您的代码有问题吗?
区分大小写字母。
如果在“shell”中遇到特殊字符(符号),代码会抛出错误。即使出现符号,如何防止错误发生?
os.system()
开始 shell。如果您的 direct.txt
包含 $(rm -rf ~)
,那么 shell 将删除您的主目录。
不要那样做,尤其是当根本没有理由使用 shell 时。
更好的代码会在原生中进行字符串搜索 Python;但是如果我们想要出于某种原因继续使用grep
,那可能看起来像:
import subprocess
f1 = open("/home/ace/Desktop/MB/shell_search/direct.txt", 'r', encoding='UTF-8')
for line in f1:
shell = line.strip()
shell_safe = shell.replace('/', '_').lstrip('.')
if shell_safe == '':
print("Skipping unsafe pattern: %q" % shell, file=sys.stderr)
continue
subprocess.call(
['grep', '-i', '-e', shell],
stdin=open('IIS_W3C_Log.log', 'r'),
stdout=open(f'{shell_safe}.txt', 'w')
)
import os
f1 = open("/home/ace/Desktop/MB/shell_search/direct.txt",'r',encoding='UTF-8')
lines = f1.readlines()
lines = [line.strip() for line in lines]
for shell in lines:
os.system("cat IIS_W3C_Log.log | grep -i \"" + shell + "\" > "+shell+".txt")
-i 选项不起作用...您的代码有问题吗? 区分大小写字母。
如果在“shell”中遇到特殊字符(符号),代码会抛出错误。即使出现符号,如何防止错误发生?
os.system()
开始 shell。如果您的 direct.txt
包含 $(rm -rf ~)
,那么 shell 将删除您的主目录。
不要那样做,尤其是当根本没有理由使用 shell 时。
更好的代码会在原生中进行字符串搜索 Python;但是如果我们想要出于某种原因继续使用grep
,那可能看起来像:
import subprocess
f1 = open("/home/ace/Desktop/MB/shell_search/direct.txt", 'r', encoding='UTF-8')
for line in f1:
shell = line.strip()
shell_safe = shell.replace('/', '_').lstrip('.')
if shell_safe == '':
print("Skipping unsafe pattern: %q" % shell, file=sys.stderr)
continue
subprocess.call(
['grep', '-i', '-e', shell],
stdin=open('IIS_W3C_Log.log', 'r'),
stdout=open(f'{shell_safe}.txt', 'w')
)