linux - 如何在 Bash 中将字符串 ="Domain_12345_20180821230101.dat"切成 12345_20180821

标签 linux bash

前提是这种刺痛是动态的。如果是Domain_1234_20180821230101.dat那么我想要1234_20180821 。我怎样才能做到这一点?

即,当 Domain_12_20180821230101.dat那么我想要输出为 12_20180821

最佳答案

适用于您给出的示例的原始解决方案是:

grep -oP '[0-9]+_[0-9]{8}' <<< "$string"

这将提取由可变长度数字组成的任何子字符串,后跟下划线,后跟 8 位数字(如果存在),否则不返回任何内容。

您可以在 grep --helphttps://www.regular-expressions.info/tutorial.html 下找到更多信息来帮助您理解此命令,并根据需要调整它以满足您的要求。 .

关于linux - 如何在 Bash 中将字符串 ="Domain_12345_20180821230101.dat"切成 12345_20180821,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720050/

相关文章:

linux - 将目录中的文件分配给子目录

python获取上传/下载速度

linux - 如何从顶级目录之外运行 Flask 应用程序?

java - Raspbian/Java : Classpath and MySQL, 在 Windows 中工作而不在 Pi 上工作

linux - 在 bash 中检查字符串中的子字符串

linux - 使用参数的 BASH shell 脚本

linux - bash array using @ vs *,两者的区别

linux - 指向文件的硬链接(hard link) ant stat st_nlink 不匹配

linux - 如果我的 `PATH` 中的可执行文件需要使用 sudo 运行,我如何才能将它们提供给 GNU Make?

linux - cat `-q` 文件(在 linux 中)- 传递看起来像选项的操作数