【问题标题】:Extract text from hostname从主机名中提取文本
【发布时间】:2009-07-31 11:01:51
【问题描述】:

使用 OS X,我需要一个 bash 脚本来查看客户端 mac 主机名,例如: 12345-BA-PreSchool-LT.local

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

我想我需要回显主机名并使用 sed、awk 和可能 cut 的组合来剥离字符以留给我:
“学前教育学士”

非常感谢任何帮助。这是我目前所拥有的:

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

【问题讨论】:

    标签: bash macos shell sed awk


    【解决方案1】:
     echo "12345-BA-PreSchool-LT.local" | cut -d'-' -f2,3 | sed -e 's/-/ /g'
    

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

    【讨论】:

    • 为什么不使用 sed -e 'y/-/ /' 或使用 tr?
    • 太好了,是的,切割已定义,您的生产线确实有效!谢谢。
    【解决方案2】:

    我喜欢保持简单:)

    你可以通过剪切来做到这一点:

    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
    

    【讨论】:

      【解决方案3】:

      怎么样

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

      【讨论】:

      • 我也确认这也适用于我。感谢您的帮助。
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:
        bash$ string="12345-BA-PreSchool-LT.local"
        bash$ IFS="-"
        bash$ set -- $string
        bash$ echo $2-$3
        BA-PreSchool
        

        【讨论】:

          猜你喜欢
          • 2010-10-23
          • 1970-01-01
          • 1970-01-01
          • 2018-05-31
          • 2021-11-03
          • 2014-10-30
          • 2021-01-28
          • 1970-01-01
          相关资源
          最近更新 更多