我必须在包含多个pip和grep命令的python脚本中使用以下bash命令。
grep name | cut -d':' -f2 | tr -d '"'| tr -d ','
我尝试使用子流程模块执行相同的操作,但没有成功。
有人可以帮我在Python3脚本中运行上述命令吗?
我必须从文件file.txt
中获取以下输出。
Tom
Jack
file.txt包含:
"name": "Tom",
"Age": 10
"name": "Jack",
"Age": 15
实际上,我想知道如何使用Python运行以下bash命令。
cat file.txt | grep name | cut -d':' -f2 | tr -d '"'| tr -d ','
答案 0 :(得分:1)
无需使用子进程库或任何其他与os cmd相关的库,仅使用Python即可。
my_file = open("./file.txt")
line = True
while line:
line = my_file.readline()
line_array = line.split()
try:
if line_array[0] == '"name":':
print(line_array[1].replace('"', '').replace(',', ''))
except IndexError:
pass
my_file.close()
答案 1 :(得分:0)
如果您不尝试解析json文件或其他任何使用解析器将是最佳方法的结构化文件,只需将命令更改为:
grep -oP '(?<="name":[[:blank:]]").*(?=",)' file.txt
您根本不需要任何管道。
这将为您提供输出:
Tom
Jack
说明:
-P
激活perl正则表达式以进行超前查找/向后查找-o
仅输出匹配的字符串而不是整行(?<="name":[[:blank:]]").*(?=",)
(?<="name":[[:blank:]]")
令人反感:强制约束"name":
,后跟一个空白字符,然后再用双引号"
命名,后跟一个双引号"
,这是通过{提取的{1}}积极向前看