示例:假设这是在一个文件中:
AB: Test CD: Testing EF: Rest
我想要一个脚本来搜索 CD 并将“测试”保存到变量中。我尝试过一些东西,awk
但不知何故我没有取得任何进展。
答案1
使用grep
Perl 风格的正则表达式,您可以使用正向回顾:
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