Wilson@思源

目 录

通过shell获取思源随机端口

要从 pgrep -fl​ 命令的输出中提取 --port​ 后面的端口号,您可以使用 awk​ 或 sed​ 来处理文本。下面我会给出两种方法:

使用 awk

awk​ 是一个非常强大的文本处理工具,可以用来提取或修改文本文件中的数据。您可以使用 awk​ 来分割命令行参数,并仅保留您需要的部分。
bash
pgrep -fl SiYuan-Kernel | awk -F ' ' '{for (i=1; i<=NF; i++) if ($i ~ /--port/) print $(i+1)}'
这里 -F ' '​ 指定了字段分隔符为空格。if ($i ~ /--port/) print $(i+1)​ 表示当第 i​ 个字段匹配 --port​ 时,打印第 i+1​ 个字段,即端口号。

使用 sed

如果您更喜欢使用 sed​,也可以用类似的方法来处理文本:
bash
pgrep -fl SiYuan-Kernel | sed -n 's/.*--port \([0-9]*\).*/\1/p'
这里 sed -n​ 表示默认不打印任何行,只有匹配到模式时才打印。s/.*--port \([0-9]*\).*/\1/p​ 的意思是匹配 --port​ 后面的数字,并将这些数字打印出来。

示例

现在让我们尝试一下这些命令:
1.
使用 awk​:
bash
pgrep -fl SiYuan-Kernel | awk -F ' ' '{for (i=1; i<=NF; i++) if ($i ~ /--port/) print $(i+1)}'
2.
使用 sed​:
bash
pgrep -fl SiYuan-Kernel | sed -n 's/.*--port \([0-9]*\).*/\1/p'
这些命令将会输出 55822​,即 SiYuan-Kernel​ 进程使用的端口号。如果您需要进一步的帮助或有其他问题,请随时告诉我。