从文件名中提取数字

癌症昆德拉

我有一个遵循此模型的文件名:

 1.raw_bank_details_211.trg
 2.raw_bank_details_222.trg

我需要cut在Unix中使用命令并剪切上面的字符串以获得字符串,211然后222从字符串中回显值。

我已经使用过grep grep -o -E '[0-9]+',我需要一个替代方案。

吉勒斯“别再邪恶了”

cut是错误的工具。要操作诸如文件名之类的短字符串,请尽可能使用外壳程序的字符串操作工具。所有的sh型shell¹(sh,破折号,bash,ksh,zsh等)都有一些基本的字符串操作作为变量替换的一部分。参见例如“参数扩展”下破折号手册您可以删除与模式匹配的最短/最长前缀/后缀。

您想要文件名中的最后一位数字,所以:

  1. 通过将所有内容剥离到最后一位来确定非数字后缀。
  2. 删除该后缀。
  3. 剥离所有内容,直到最后一个非数字。
filename=1.raw_bank_details_211.trg
suffix="${filename##*[0-9]}"
number="${filename%"$suffix"}"
number="${number##*[!-0-9]}"

¹除了某些POSIX Bourne之前的外壳外,您并不在意这些外壳。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章