我很难拼凑sed语法来更改此字符串的最后一个数字字符:<FITID>1261703816
我有一个文件,其中有几个字段需要更改,但字符串的数字部分将始终不同。但是,数字字符的数量将始终相同(10)。基本上我只需要在包含数百个字段的文件上将<FITID>1261703816
的最后一个字符更改为:<FITID>1261703817
。
答案 0 :(得分:1)
此命令会将<FITID>
后的第十位更改为7
:
sed -E 's/([<]FITID[>][[:digit:]]{9})[[:digit:]]/\17/g' file
例如:
$ cat file
words, words, <FITID>1261703816 and more words
$ sed -E 's/([<]FITID[>][[:digit:]]{9})[[:digit:]]/\17/g' file
words, words, <FITID>1261703817 and more words
这只需要一个替代命令。 [<]FITID[>]
匹配<FITID>
,我们将尖括号放在方括号中,因为有些seds会将它们视为特殊的。 [[:digit:]]{9}
匹配九位数。我们使用[:digit:]
代替0-9
,因为它是unicode安全的。这些字符都放在父母(...)
中,因此在替换文本中,我们可以将它们作为组\1
引用。