sed 's@^#\([0-9]\{10\}\)$@echo \1|perl -pe "s/(\\d+)/localtime($...
发布网友
发布时间:2024-09-10 12:41
我来回答
共1个回答
热心网友
时间:2024-09-29 08:05
用了sed的替换命令s,具体语法如下:
s/A/B/g
A是一个正则表达式,B是用于替换的内容。将匹配A的所有内容替换为B。
g表示全局替换,不加g表示仅替换匹配到的第一次。
如果A或者B中本身包含斜杠,那么为了与s命令的分隔符以示区分,也可以写成 s@A@B@g,s#A#B#g 等其他形式。总之,s后的第一个字符就被sed用于s命令分隔符。
回正题:
s@^#\([0-9]\{10\}\)$@echo \1|perl -pe "s/(\\d+)/localtime($1)/e“@e
[0-9]匹配一位数字,[0-9]{10} 匹配十位数字。
( )在正则里是组的概念,后面在B中可以依次以\1, \2等按顺序引用。echo \1中的\1就会被代换为前面小括号里的内容(10位数字)。
这里在[ ] 以及小括号前面都加了转义符,其实,如果sed加了-r选项,就可以不用转义直接使用。
另外,s命令最后应该是g而不是e吧?