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