1

如何搜索 shell 脚本输出的单词并保存在其他变量中。

下面的命令将在我的视图中显示基线列表。

cmd :cleartool lsstream -fmt "%[found_bls]NXp\n" -view $VIEW_NAME

输出 :

baseline:MHC_BUILDTREE1.0.1
baseline:JEPG_DUIF_CI
baseline:MOR_BuildTree_BLD_I.0.1

我需要搜索包含的行"MOR_BuildTree"以及我必须保存在一个变量中以执行其余命令的输出行。任何人都可以给出建议吗?

4

3 回答 3

0

这是我刚刚测试的从所有基础基线中获取一个基线的内容:

$ res=`cleartool lsstream -fmt "%[found_bls]CXp" -view $VIEW_NAME | tr -s " " "\\012" | grep $yourBaselineName| sed -e "s/.*://" -e "s/@.*//"`

(设置$yourBaselineName为您要提取的适当名称)

主要困难在于lsstream -fmt "%[found_bls]CXp"将在同一输出行上列出所有基础基线(因此输出只有一行基线名称,用逗号分隔)。
您需要先将行拆分为多个行。
请参阅“如何在 bash shell 中将一个字符串拆分为多个字符串? ”:这是tr -s " " "\\012"上述命令的一部分。

然后您需要删除基线名称之前和之后的内容:

 baseline:aBaselineName@/vobs/YourPVob

sed上述命令的一部分可以做到这一点:

sed -e "s/.*://" -e "s/@.*//"

(两个正则表达式删除''之前和' :'之后的所有内容@

于 2012-03-02T06:53:45.927 回答
0

不完全确定您在问什么,但是要将变量设置为命令的结果,您可以使用:

var=`command`

或者您可以将您的命令传送到某个过滤器以根据需要重新格式化它。

command | some_filter | another filter

您还可以将两者结合起来:

var=`command | some_filter | another filter`
于 2012-03-02T04:19:51.927 回答
0

这不是一个简单的shell脚本吗?

variable=$(cmd :cleartool lsstream -fmt "%[found_bls]NXp\n" -view $VIEW_NAME |
           sed -n '/MOR_Buildtree/s/^baseline://p')

这些-n选项的意思是“默认情况下不打印”。该命令查找您的姓名,删除前导baseline:并打印它。

于 2012-03-02T07:09:35.980 回答