sed 's@^#\([0-9]\{10\}\)$@echo \1|perl -pe "s/(\\d+)/localtime($1)/e"@e' ~/.bash_history
若以下回答无法解决问题,邀请你更新回答
展开全部
用了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吧?
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吧?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询