sed 正则表达式替换

sed 正则表达式替换

我想sed通过以下来源实现生成:

my_component_name_with_underlines_9.5.6

my_other_component_name_with_underlines_8.7.1

以下目标字符串:

my_component_name_with_underlines_version = "9.5.6"

my_other_component_name_with_underlines_version = "8.7.1"

逻辑可能是这样的:

  • 找到数字和点出现之前的最后一条下划线
  • _version = " 在数字前添加
  • "在末尾附加最后一个。

谢谢您对此提出的任何建议。

答案1

awk可以获取最后一个下划线后的字符串,进行一些替换并打印结果:

awk -F_ 'BEGIN {OFS="_"} {a=$NF;$NF="version"; print $0" = \""a"\""}'

注意:这将适用于所有当代的版本的awk

答案2

sed

echo "my_component_name_with_underlines_9.5.6
my_other_component_name_with_underlines_8.7.1" | sed -E 's/(.*_)(.*)/\1version = "\2"/g' 

my_component_name_with_underlines_version = "9.5.6"
my_other_component_name_with_underlines_version = "8.7.1"

.*用要查找的明确的字符串进行替换,因为.*将匹配any character any amount of times

相关内容