使用awk获取子字符串

时间:2013-09-30 06:55:17

标签: regex linux bash shell awk

全部,我想使用AWK将下面的String拆分为第一部分。

如何编写AWK表达式?

#!/bin/bash

function parsePackageName()
{
  #....... here I want to get the String "pp-demo-mid"
  #        from "pp-demo-mid-1.0-212.noarch"
}

示例输入:

pp-demo-mid-1.0-212.noarch
pp-1.0-212.noarch
pp-xx-1.0-212.noarch

期望的输出:

pp-demo-mid
pp
pp-xx

这意味着,我需要在版本号之前解析第一部分。

2 个答案:

答案 0 :(得分:3)

这样的东西?它将字符串除以第一个数字。

awk -F"-[0-9]" '{print $1}' file
pp-demo-mid
pp
pp-xx

或者你可以更具体,并在第一个-x.x之后进行设置,其中x是数字

awk -F"-[0-9][.][0-9]" '{print $1}' file

答案 1 :(得分:2)

以下是使用sed

的尝试
sed -r 's/([^0-9]+)-.*/\1/'

([^0-9]+)将捕获\1

中的所有非数字字符