需要使用 sed 更改图案的"Nth"字符

  • 本文关键字:Nth 字符 sed bash sed
  • 更新时间 :
  • 英文 :


我很难将 sed 语法拼凑在一起以更改此字符串的最后一个数字字符:<FITID>1261703816我有一个文件,其中包含几个需要更改的字段,但字符串的数字部分将始终不同。 但是,数字字符的数量将始终相同 (10)。基本上,我只需要将 <FITID>1261703816 的最后一个字符更改为: <FITID>1261703817包含数百个此类字段的文件。

此命令会将<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>我们将尖括号放入方括号中,因为某些 sed 会将它们视为特殊。 [[:digit:]]{9}匹配九位数字。 我们使用[:digit:]代替0-9,因为它是 unicode 安全的。 这些字符都放在 父(...) ,因此,在替换文本中,我们可以将它们作为组1引用。

相关内容

  • 没有找到相关文章

最新更新