我有一个名为ver.go的golang文件,其中包含1个变量。
const (
ver = "1.1.1"
)
我希望能够使用bash命令输出1.1.1。如果我们摆脱了开头的标签和像这样的空格,我就能做到这一点而没有问题const (
ver="1.1.1"
)
通过使用此命令awk -F= '/^ver=/{print $2}' ver.go | sed -e 's/^"//' -e 's/"$//'
但是,由于必须使用gofmt
正确格式化,所以我似乎无法弄清楚其中的制表符以及等号后的空格任何帮助表示赞赏。
最佳答案
如果您只想从文件"1.1.1"
中获取ver.go
,一个简单的解决方案是让sed
为您完成工作。您可以使用带有单个后向引用的普通替换形式来捕获"1.1.1"
并将其重新插入,以替换整行。您可以使用sed -n
抑制正常模式空间的输出,并在替换后添加p
,以便在替换成功后仅打印与您的REGEX匹配的行,例如
sed -n 's/^[[:space:]]*ver[[:space:]]*=[[:space:]]*"\([^"][^"]*\).*$/\1/p' ver.go
无论是否在"ver"
之前加空格(或制表符),这都可以使用。示例使用/输出
使用
ver.go
内容,您将获得:$ sed -n 's/^[[:space:]]*ver[[:space:]]*=[[:space:]]*"\([^"][^"]*\).*$/\1/p' ver.go
1.1.1
如果我误解了您的要求,请告诉我。如果您还有其他问题,请在下面留言。
关于bash - 如何获取使用bash制表的变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63961952/