bash - 如何获取使用bash制表的变量的值

标签 bash go scripting

我有一个名为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/

相关文章:

javascript - 仅允许字母数字和特殊字符的正则表达式不起作用

javascript - golang api 请求在浏览器中有效,但在从本地运行的 JavaScript 请求时返回 401(未经授权)

GO:导入我的 go 文件时出错

shell - 在shell脚本的for循环中使用sqlite3会产生错误

bash - 在数字列表中添加前导空格?

go - 为什么我使用 fmt.Fscanf 时得到 "input does not match format"?

linux - 如何从下载的网页中提取信息?

linux - du如何估计文件大小?

bash - 我们什么时候需要用大括号括住 shell 变量?

xml - 使用 XMLStarlet 替换 XML 值内的子字符串