比如说我有一串数字,它们组成了一个电话号码,就像这样
##########
我想将它们格式化为:
###-###-####
插入只会插入新行,我不知道如何表达类似
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