通过shell获取思源随机端口
要从 pgrep -fl
命令的输出中提取 --port
后面的端口号,您可以使用 awk
或 sed
来处理文本。下面我会给出两种方法:
使用 awk
awk
是一个非常强大的文本处理工具,可以用来提取或修改文本文件中的数据。您可以使用 awk
来分割命令行参数,并仅保留您需要的部分。
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
,也可以用类似的方法来处理文本:
pgrep -fl SiYuan-Kernel | sed -n 's/.*--port \([0-9]*\).*/\1/p'
这里 sed -n
表示默认不打印任何行,只有匹配到模式时才打印。s/.*--port \([0-9]*\).*/\1/p
的意思是匹配 --port
后面的数字,并将这些数字打印出来。
示例
现在让我们尝试一下这些命令:
-
使用
awk
:pgrep -fl SiYuan-Kernel | awk -F ' ' '{for (i=1; i<=NF; i++) if ($i ~ /--port/) print $(i+1)}'
-
使用
sed
:pgrep -fl SiYuan-Kernel | sed -n 's/.*--port \([0-9]*\).*/\1/p'
这些命令将会输出 55822
,即 SiYuan-Kernel
进程使用的端口号。如果您需要进一步的帮助或有其他问题,请随时告诉我。
