我怎样才能打印比赛前的所有内容?

我怎样才能打印比赛前的所有内容?

在我跑完之后hostname我得到了完整限定域名 (FQDN)像这样:

$ hostname
foo.mydomain.xyz

我只想获取短名称,foo以便可以将其作为变量存储在脚本中。我尝试了一些awk匹配.(点)的方法,但运气不佳。

答案1

使用awk

$ echo foo.mydomain.xyz | awk -F. '{print $1}'
foo

awk 按“记录”(默认为行)接收输入,并将每条记录分为“字段”。默认情况下,字段以空格分隔。在这里,我们将默认值更改为字段分隔符为句点。对于此示例,这意味着第一个字段为foo,第二个字段为mydomain,第三个字段为xyz。我们告诉 awk 仅打印第一个字段foo

要将短名称捕获到 shell 变量中:

shortname=$(hostname | awk -F. '{print $1}')

使用sed

这个问题也可以通过以下方法解决sed

$ echo foo.mydomain.xyz | sed 's/\..*//'
foo

此处,替换命令s/\..*//只是查找句点并删除句点及其后面的所有内容。

使用 shell

$ name=foo.mydomain.xyz
$ name=${name%%.*}
$ echo $name
foo

答案2

没有必要使用 sed、awk、grep。只需使用-s标志hostname

$ hostname -s
foo

从手册页中:

  -s, --short
        Display the short host name. This is the host name cut at the first dot.

相关内容