在文件中搜索字符串并将其后面的字符串保存到变量中

在文件中搜索字符串并将其后面的字符串保存到变量中

示例:假设这是在一个文件中:

AB: Test CD: Testing EF: Rest

我想要一个脚本来搜索 CD 并将“测试”保存到变量中。我尝试过一些东西,awk但不知何故我没有取得任何进展。

答案1

使用grepPerl 风格的正则表达式,您可以使用正向回顾:

variable_a=`grep -Po '(?<=CD: )[^ ]+' file.txt`

在 bash 中这样说:

  • 创建一个名为 的变量variable_a,并为其赋予反引号中命令产生的任何值
  • grep应该使用 perl regex ( -P) 并且只返回行 ( -o)的匹配部分
  • 该模式应匹配“CD:”,然后匹配 1 个或多个非空格字符 ( [^ ])
  • 在“file.txt”中搜索该模式

答案2

假设您发布的示例输入/输出涵盖了所有可能的用例,那么......

对于任何 sed:

$ var=$(sed -n 's/.*CD: \([^ ]*\).*/\1/p' file)
$ echo "$var"
Testing

对于任何 awk:

$ var=$(awk 'sub(/.*CD: /,""){sub(/ .*/,""); print}' file)
$ echo "$var"
Testing

相关内容