从字符串中提取数字
我有一个字符串 ABCD20110420.txt,我想从中提取日期。预计2011-04-20 我可以使用替换来删除文本部分,但如何插入“-”?
# echo "ABCD20110420.txt" | replace 'ABCD' '' | replace '.txt' ''
20110420
I have a string ABCD20110420.txt and I want to extract the date out of it. Expected 2011-04-20
I can use replace to remove the text part, but how do I insert the "-" ?
# echo "ABCD20110420.txt" | replace 'ABCD' '' | replace '.txt' ''
20110420
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这只需要对 sed 进行一次调用。
This only requires a single call to sed.
回显“ABCD20110420.txt”| sed -e 's/ABCD//' -e 's/.txt//' -e 's/\(....\)\(..\)\(..\)/\1-\ 2-\3/'
阅读:sed 常见问题解答
echo "ABCD20110420.txt" | sed -e 's/ABCD//' -e 's/.txt//' -e 's/\(....\)\(..\)\(..\)/\1-\2-\3/'
Read: sed FAQ
只需使用 shell (bash)
以上适用于像您的示例这样的文件。如果您有像
A1BCD20110420.txt
这样的文件,则不起作用。对于这种情况,
或者您可以使用正则表达式(Bash 3.2+)
Just use the shell (bash)
The above is applicable to files like your sample. If you have files like
A1BCD20110420.txt
, then will not work.For that case,
Or you can use regular expression (Bash 3.2+)