如何在类似python的grep中使用通配符搜索环境变量
假设在我的环境变量中有一个关键字,其值如下如何在类似python的grep中使用通配符搜索环境变量,python,Python,假设在我的环境变量中有一个关键字,其值如下 search_env_keyword_mytest=test1234 在unixshell中,如果我运行以下命令 search_env="search_env_keyword_" find_match=`printenv | grep ${search_env}* ` then echo $find_match will be search_env_keyword_mytest=test1234 如何在python中实现相同的效果 这是我做的,但它
search_env_keyword_mytest=test1234
在unixshell中,如果我运行以下命令
search_env="search_env_keyword_"
find_match=`printenv | grep ${search_env}* `
then
echo $find_match will be search_env_keyword_mytest=test1234
如何在python中实现相同的效果
这是我做的,但它不起作用
pattern = "search_env_keyword_\\w+"
myPattern = re.compile(r'{linehead}'.format(linehead=pattern))
for a in os.environ:
match = re.findall(myPattern, a)
它不起作用,只是在打印search_env_keyword_u,而不是search_env_keyword_mytest=test1234,如何在python中打印search_env_keyword_mytest=test1234作为结果 仅返回字符串的匹配部分,而不是整个字符串。这相当于grep-o。因为您的正则表达式应该只匹配每个环境变量一次,所以您应该只使用
此外,os.environ是一个字典,因此a只是一个键。如果还想打印该值,则需要手动添加该值
myPattern = re.compile(r'search_env_keyword_\w+')
for key, val in os.environ.items():
if myPattern.match(a):
print(f'{key}={val}')
仅返回字符串的匹配部分,而不是整个字符串。这相当于grep-o。因为您的正则表达式应该只匹配每个环境变量一次,所以您应该只使用
此外,os.environ是一个字典,因此a只是一个键。如果还想打印该值,则需要手动添加该值
myPattern = re.compile(r'search_env_keyword_\w+')
for key, val in os.environ.items():
if myPattern.match(a):
print(f'{key}={val}')
有趣的是,您的代码示例不包含print语句,但“printing”是一个bug 在您提供的代码中,您的问题是
for a in os.environ:
do_something
在python中,迭代字典是一个键列表。所以如果你的环境是
MYVAR=3
其他变量=42
您的列表将是['MYVAR','OTHERVAR']
如果你想得到你能做的一切
for key, value in os.environ.items():
line = key + "=" + value
此外,re在这方面很好,但您可能只需要
if 'mysearchstring' in line:
print(line)
有趣的是,您的代码示例不包含print语句,但“printing”是一个bug 在您提供的代码中,您的问题是
for a in os.environ:
do_something
在python中,迭代字典是一个键列表。所以如果你的环境是
MYVAR=3
其他变量=42
您的列表将是['MYVAR','OTHERVAR']
如果你想得到你能做的一切
for key, value in os.environ.items():
line = key + "=" + value
此外,re在这方面很好,但您可能只需要
if 'mysearchstring' in line:
print(line)