首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从OCS ID提取主机名

如何从OCS ID提取主机名
EN

Stack Overflow用户
提问于 2019-05-20 17:06:56
回答 3查看 66关注 0票数 0

我正在修复GLPI上的一个bash脚本,该脚本显示一个多月未更新的计算机。中的数据显示如下:

代码语言:javascript
复制
myhostname01t-2015-03-09-16-47-42

我希望通过正则表达式仅获取名称:myhostname01t

我创建了这个正则表达式:

(.*)-([0-9]{4}.*)

使用sed,我如何才能只获取名称?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-20 17:10:48

简单的剪裁还不够吗?比sed更容易理解。

代码语言:javascript
复制
echo 'myhostname01t-2015-03-09-16-47-42' | cut -d'-' -f1
票数 0
EN

Stack Overflow用户

发布于 2019-05-20 17:14:25

既然您要求使用sed:

代码语言:javascript
复制
$ S="myhostname01t-2015-03-09-16-47-42"

$ sed 's/\(^[^-]\+\).*/\1/' <<<$S
myhostname01t

或者使用awk更简单:

代码语言:javascript
复制
$ awk -F- '{print $1}' <<<$S
myhostname01t

Perl:

代码语言:javascript
复制
$ perl -F- -lane 'print $F[0]' <<<$S
myhostname01t
票数 0
EN

Stack Overflow用户

发布于 2019-05-21 02:04:22

如果目标是从存储在一个变量中的OCS ID中提取主机名,并将其放入另一个变量中,那么可以使用纯Bash代码来完成:

代码语言:javascript
复制
ocsid='parta-1234-partb-2015-03-09-16-47-42'

hostname=${ocsid%-*-*-*-*-*-*}

printf 'hostname=%s\n' "$hostname"

有关${ocsid%-*-*-*-*-*-*}的解释,请参阅Removing part of a string (BashFAQ/100 (How do I do string manipulation in bash?))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56217612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档