我想提取该主机名的第一部分testsrv1
来自testsrv1.main.corp.loc.domain.com于UNIX,shell脚本中.
我可以使用什么命令?这将是第一个时期之前的任何事情.
pil*_*row 23
你在shell变量中有服务器名吗?你在使用类似sh的shell吗?如果是这样,
${SERVERNAME%%.*}
Run Code Online (Sandbox Code Playgroud)
会做你想做的.
Pab*_*ruz 21
你可以使用cut:
echo "testsrv1.main.corp.loc.domain.com" | cut -d"." -f1
Run Code Online (Sandbox Code Playgroud)
Ant*_*mer 19
建立在pilcrow的答案之上,不需要新的变量,只需使用内置的$ HOSTANME.
echo $HOSTNAME-->my.server.domain
echo ${HOSTNAME%%.*}-->my
Run Code Online (Sandbox Code Playgroud)
测试了两个相当不同的Linux.
2.6.18-371.4.1.el5,GNU bash,版本3.2.25(1)-release(i386-redhat-linux-gnu) 3.4.76-65.111.amzn1.x86_64,GNU bash,版本4.1.2(1 )-release(x86_64-redhat-linux-gnu)
小智 5
我使用 command cut、awk或bashsed变量
过孔切割
[flying@lempstacker ~]$ echo "testsrv1.main.corp.loc.domain.com" | cut -d. -f1
testsrv1
[flying@lempstacker ~]$
Run Code Online (Sandbox Code Playgroud)
通过awk
[flying@lempstacker ~]$ echo "testsrv1.main.corp.loc.domain.com" | awk -v FS='.' '{print $1}'
testsrv1
[flying@lempstacker ~]$
Run Code Online (Sandbox Code Playgroud)
通过sed
[flying@lempstacker ~]$ echo "testsrv1.main.corp.loc.domain.com" | sed -r 's@([^.]*).(.*)@\1@g'
testsrv1
[flying@lempstacker ~]$
Run Code Online (Sandbox Code Playgroud)
通过Bash 变量
[flying@lempstacker ~]$ hostName='testsrv1.main.corp.loc.domain.com'
[flying@lempstacker ~]$ echo ${hostName%%.*}
testsrv1
[flying@lempstacker ~]$
Run Code Online (Sandbox Code Playgroud)