写一个python脚本,输入shell命令是linkd all |grep "(",返回的结果是redis-server (17014) [ OK ],提取里面的字符串放在json里面
时间: 2024-02-15 18:37:12 浏览: 25
以下是一个可能的实现,使用了`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`的文件中。
无法进入文件夹,提示:The tag present in the reparse point buffer is invalid.
这个问题通常是由于文件夹的符号链接或重解析点损坏导致的。你可以尝试以下几种方法来解决这个问题:
1. 使用管理员身份打开命令提示符(或Windows PowerShell),并运行以下命令来修复文件系统错误:
```
chkdsk /f <驱动器>:
```
其中,`<驱动器>`是你遇到问题的驱动器的盘符。
2. 如果第一种方法无法解决问题,你可以尝试使用 Microsoft 的 Sysinternals 工具 Junction 或者 Linkd 来删除或重新创建损坏的重解析点。
a. 下载并解压缩 Junction 或 Linkd 工具。
b. 打开命令提示符(或Windows PowerShell)并进入遇到问题的文件夹所在的目录。
c. 运行以下命令来删除重解析点:
```
junction -d <文件夹名称>
```
或者
```
linkd <文件夹名称> /d
```
其中,`<文件夹名称>`是你遇到问题的文件夹的名称。
d. 重新创建重解析点。如果你使用 Junction 工具,则可以运行以下命令:
```
junction <文件夹名称> <目标路径>
```
如果你使用 Linkd 工具,则可以运行以下命令:
```
linkd <文件夹名称> <目标路径>
```
其中,`<文件夹名称>`是你要创建重解析点的文件夹的名称,`<目标路径>`是你要链接到的目标路径。
如果以上方法都无法解决问题,你可能需要考虑使用数据恢复软件来尝试恢复损坏的文件夹。