Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在类似python的grep中使用通配符搜索环境变量_Python - Fatal编程技术网

如何在类似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)