写一个python脚本,输入shell命令是linkd all |grep "(",返回的结果是redis-server (17014) [ OK ],提取里面的字符串放在json里面
时间: 2024-02-15 11:37:12 浏览: 72
以下是一个可能的实现,使用了`subprocess`模块来执行命令,并使用`re`模块来匹配字符串:
```python
import subprocess
import re
import json
command = "linkd all |grep '('"
output = subprocess.check_output(command, shell=True)
match = re.search(r'(\w+\-\w+)\s+\((\d+)\)', output.decode())
if match:
data = {
"name": match.group(1),
"pid": int(match.group(2)),
"status": "OK"
}
json_data = json.dumps(data)
print(json_data)
else:
print("No match found")
```
这个脚本首先执行`linkd all |grep '('`命令,并将输出存储在`output`变量中。然后使用正则表达式来匹配输出中包含的进程名和进程ID,并将其存储在`data`字典中。最后,使用`json.dumps()`函数将`data`转换为JSON格式,并打印出来。如果没有找到匹配,则输出"No match found"。
相关问题
shell命令linkd all |grep "(" | awk -F '(' '{print $1}' ,返回的结果放在json里面
你可以使用以下命令将结果存储为JSON格式:
```
linkd all | grep "(" | awk -F '(' '{print $1}' | jq -R -s 'split("\n") | map(select(length > 0)) | {result: .}'
```
这个命令将使用`jq`工具将输出转换为JSON格式,并将结果存储在`result`属性中。你可以将结果保存到一个文件中,比如说`output.json`,使用以下命令:
```
linkd all | grep "(" | awk -F '(' '{print $1}' | jq -R -s 'split("\n") | map(select(length > 0)) | {result: .}' > output.json
```
这将把结果输出到名为`output.json`的文件中。
阅读全文