gpt4 book ai didi

bash - 打印用 grep 找到的正则表达式字符串

转载 作者:行者123 更新时间:2023-12-03 08:23:32 26 4
gpt4 key购买 nike

我有一个疯狂的长命令转换(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 的工作方式?该脚本没有变量,它只是一个简写,以避免输入大量难以记住的语法+值。

谢谢。

最佳答案

可能很简单

vosxls | grep -Eo "^vm-\d{5,}"

指定 -o 允许您返回仅与正则表达式匹配的内容。

-o, --only-matching
Prints only the matching part of the lines.

关于bash - 打印用 grep 找到的正则表达式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67156628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com