【发布时间】:2021-04-19 05:57:00
【问题描述】:
我有这个疯狂的长命令转换(bash)脚本,它输出一个带有对象的小表以及一些与之相关的其他数据。我想单出对象的名称以将其用作变量以进一步运行更多命令。
它输出如下内容:
ID PATH NAME VERSION UPGRADE STATUS
vm-13034 /abc/def somethingelse vX.X.X-XXX-XXXXXXX Up to date
我感兴趣的值是 ID,它始终是 vm-#####。使用在线工具,我想出了正则表达式^vm-\d{5,}$(, bc,数字在增加)。所以我认为vosxls | grep -E ^vm-\d{5,}$(vosxls 是长命令的脚本名称)可以工作,但它什么也不返回。我尝试使用-w、-e、grep -e "vm-\d{5,}" <(vosxls) 和更多添加和删除封闭的^ 和$ 字符,当它会引发错误时,将字符串括在软引号和硬引号中或什么都不用无论如何都行。
其他没有出错的东西,什么都没有返回。
我阅读了一些关于 Perl 的示例和类似的东西,但我没有这样做,并且通常尽可能保持基本,这样我就可以在另一个系统中运行它而不会出现问题。我从最基本的东西(无论如何我都知道)中转移的最多的是egrep,如果我没记错的话,我相信它与grep -e相同。
如何打印字符串?是因为我已经在使用脚本,它会以某种方式影响 grep 的工作方式吗?该脚本没有变量,它只是一种简写方式,以避免输入很多难记的语法+值。
谢谢。
【问题讨论】:
-
cut -f1 -d' '也许。可能其他东西更好。