全部,我想使用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
这意味着,我需要在版本号之前解析第一部分。
答案 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