我想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
。