Bash 脚本从一行中获取/提取特定信息/单词

Bash 脚本从一行中获取/提取特定信息/单词

该命令nvcc --version输出以下内容:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_21:14:42_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

我正在尝试获取 cuda 版本,在本例中是10.2来自第 4 行。

因此我尝试了以下操作:

cudaVersion="$(nvcc --version| grep 'Cuda compilation ')"
echo "$cudaVersion"

但是这给了我整行作为输出。但是我只想将版本分配给cudaVersion

我相信这必须与 一起工作cut,但我无法得到它

提前致谢

答案1

使用grepPerl 正则表达式支持(grep -P):

$ nvcc --version | grep -Po 'release \K\d+\.\d+'
11.2
  • -o仅打印匹配的文本。
  • release \Krelease查找后跟空格的字符串,然后将其从匹配中排除( \K),以便只有后面的部分\K包含在匹配的文本中。
  • 后面的部分\K\d+(至少一位数字)后跟一个句点(\.),后跟至少一位数字(\d+),与实际版本号相匹配。

相关内容