【问题标题】:Linux command line extracting name from text [closed]Linux命令行从文本中提取名称[关闭]
【发布时间】:2013-11-25 19:02:31
【问题描述】:

如何提取形式类似的软件的基本名称:

软件-1.2.3-vd.ext 或者 软件-1.2.3-vd.ext

我需要提取软件或软件,版本之前的所有内容。 我看过正则表达式,但不知道该怎么做。 谢谢。

【问题讨论】:

  • google grep 示例 - 这应该会有所帮助!
  • 让您从中获取软件名称的实用程序仅打印名称。例如,rpm 可以轻松做到这一点。

标签: regex linux bash shell


【解决方案1】:

sed:

echo 'software-1.2.3-vd.ext'  | sed 's/\-[0-9].*//'  # software
echo 'soft-ware-1.2.3-vd.ext' | sed 's/\-[0-9].*//'  # soft-ware

【讨论】:

  • 这很好用,谢谢,现在我可以检查它的确切含义了。
  • 不客气。它删除第一个 - 后跟一个数字,以及它后面的每个字符
【解决方案2】:

纯 BASH 解决方案:

s="software-1.2.3-vd.ext"
echo "${s%%-[0-9]*}"
software

s="soft-ware-1.2.3-vd.ext"
echo "${s%%-[0-9]*}"
soft-ware

【讨论】:

  • +1 表示不产生额外的进程
【解决方案3】:

使用命令basename(专门用于此目的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2013-04-12
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多