从文件中提取单词

时间:2016-01-19 14:37:06

标签: bash

我有一个Podfile.lock文件,我想从中提取框架版本(没有括号)。这就是这条线的样子:

PODS:
- MyPrivateFramework (1.0.2.34)

我试图使用sed但没有任何作用。

我尝试过很多东西,这是最新的:

VERSION=$(sed 's/.*MyPrivateFramework (/\1/' Podfile.lock)
echo $VERSION

没有运气..任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

awk救援!

$ awk -F'[()]' '/MyPrivateFramework/{print $(NF-1)}' file

1.0.2.34

说明:将字段分隔符设置为打开/关闭括号,找到带有关键字的行,打印倒数第二个字段。

更新:您可以照常将输出分配给变量

$ version=$(awk -F'[()]' '/MyPrivateFramework/{print $(NF-1)}' pods); echo $version
1.0.2.34

答案 1 :(得分:1)

使用grep -oP

grep -oP 'MyPrivateFramework \(\K[^)]+' file
1.0.2.34

使用sed

sed -n 's/.*MyPrivateFramework (\([^)]*\).*/\1/p' file
1.0.2.34

答案 2 :(得分:1)

你走在正确的轨道上;但是有很多选择。这是一个使用awkcut

的人
VERSION=$(awk '/MyPrivateFramework/ { print $3 }' Podfile.lock | cut -d '(' -f 2 | cut -d ')' -f 1)
echo $VERSION

给出:

1.0.2.34