从主机名中提取文本

时间:2009-07-31 11:01:52

标签: bash macos shell sed awk

使用OS X,我需要一行bash脚本来查看客户端mac主机名,如: 12345-BA-学龄前儿童LT.local

前5位数字是资产序列号,连字符将业务单位代码与部门名称分隔,后跟类似“LT”的字母表示笔记本电脑。

我想我需要回应主机名,并使用sed,awk的组合,或者可能会剪切掉字符以留下我: “BA PreSchool”

任何帮助非常感谢。这就是我到目前为止所做的:

echo $HOSTNAME | sed 's/...\(...\)//' | sed 's/.local//'

5 个答案:

答案 0 :(得分:4)

 echo "12345-BA-PreSchool-LT.local" | cut -d'-' -f2,3 | sed -e 's/-/ /g'

(不在OSX上,所以不确定是否定义了剪切)

答案 1 :(得分:3)

我喜欢保持简单:)

你可以用切割来做到这一点:

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

答案 2 :(得分:3)

怎么样

echo $HOSTNAME | awk 'BEGIN { FS = "-" } ; { print $2, $3 }'

答案 3 :(得分:0)

Awk可以轻松解决您的问题。

echo "12345-BA-PreSchool-LT.local" | awk -F'-' '$0=$2" "$3'
BA PreSchool

答案 4 :(得分:0)

bash$ string="12345-BA-PreSchool-LT.local"
bash$ IFS="-"
bash$ set -- $string
bash$ echo $2-$3
BA-PreSchool