有没有办法可以在 sed 中将一个字符插入到一行或者用其自身加上其他字符替换任意字符?

有没有办法可以在 sed 中将一个字符插入到一行或者用其自身加上其他字符替换任意字符?

比如说我有一串数字,它们组成了一个电话号码,就像这样

##########

我想将它们格式化为:

###-###-####

插入只会插入新行,我不知道如何表达类似

sed (s/[0-9]/TheNumberIFound-/)//3//6

那么有什么方法可以让 sed 在匹配的模式后添加一些内容,或者用其自身加上一些其他字符替换匹配的模式?

答案1

$ echo “1234567890” | sed -re 's/([0-9]{3})([0-9]{3})([0-9]{4})/\1-\2-\3/g'
123-456-7890
  • [0-9]确实匹配电话号码中某个位置的任意数字。
  • {3}告诉 sed 匹配此前面的模式,3次数。
  • 这些日志的三个重复部分周围的“与()(括号)表示“记忆”中匹配的数字,然后使用第一个括号
    “回忆”这些“记忆” ,第二个括号“回忆”等等。 \1\2
  • 因此\1-\2-\3会重新格式化您的电话号码。
  • 在末尾添加g以使 sed 在每行中执行多次此操作。

有意尝试将语言保持在“菜鸟”水平;-p

相关内容