我的字符串以:
结尾...", "VERI-1000")
我试图使用sed(或任何其他工具)将它们格式化为
...", "(VERI-1000)" uid="1000"/>
“VERI”和“1000”值会多次更改,因此并不总是“VERI”而不是“1000”
我想那时我正在尝试搜索“)字符串之前的数值,然后在uid =”
之后插入该值答案 0 :(得分:2)
试试这个sed:
sed -i.bak 's~"\([^"-]*\)-\([0-9]*\)")~"(\1-\2") uid="\2"/>~' file
答案 1 :(得分:0)
使用GNU sed
,您可以执行以下操作:
sed -r 's_([[:digit:]]+)"\)$_& uid="\1"/>_'
该命令取代了这个:
([[:digit:]]+)"\)$
^ start numbered group (number 1)
^^^^^^^^^^^^ any number of digits
^ close numbered group
^^^^ quote, bracket, EOL
用这个:
& uid="\1"/>
^ all of the matched string
^^ contents of group number 1
示例:
sed -r 's_([[:digit:]]+)"\)$_& uid="\1"/>_' <<<'...", "VERI-1000")'
...", "VERI-1000") uid="1000"/>
与POSIX兼容的方式:
sed 's_\([[:digit:]]\{1,\}\)")$_& uid="\1"/>_'