题
使用OS X,我需要一行bash脚本来查看客户端mac主机名,如: 12345-BA-学龄前儿童LT.local
前5位数字是资产序列号,连字符将业务单位代码与部门名称分隔,后跟类似“LT”的字母表示笔记本电脑。
我想我需要回应主机名并使用sed,awk的组合,或者可能会删除以删除字符以留下我:
“BA PreSchool”
任何帮助非常感谢。这就是我到目前为止所做的:
echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'
解决方案
echo "12345-BA-PreSchool-LT.local" | cut -d'-' -f2,3 | sed -e 's/-/ /g'
(不在OSX上,所以不确定是否定义了剪切)
其他提示
我喜欢保持简单:)
你可以用切割来做到这一点:
echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3
BA-PreSchool
如果要删除连字符,可以使用tr
echo 12345-BA-PreSchool-LT.local | cut -d"-" -f2,3 | tr "-" " "
BA PreSchool
怎么样
echo $HOSTNAME | awk 'BEGIN { FS = "-" } ; { print $2, $3 }'
Awk可以轻松解决您的问题。
echo "12345-BA-PreSchool-LT.local" | awk -F'-' '<*>=$2" "$3'
BA PreSchool
bash$ string="12345-BA-PreSchool-LT.local"
bash$ IFS="-"
bash$ set -- $string
bash$ echo $2-$3
BA-PreSchool
不隶属于 StackOverflow