从文件名中提取数字
在 BASH 中,我想使用 sed,但不知道如何提取模式而不是通常的替换。
例如:
FILENAME = 'blah_blah_#######_blah.ext'
密码数量(在上面的示例中用“#”替代)可以是 7 或 10
我只想提取数字
In BASH I thought to use sed
, but can't figure how to extract pattern instead usual replace.
For example:
FILENAME = 'blah_blah_#######_blah.ext'
number of ciphers (in above example written with "#" substitute) could be either 7 or 10
I want to extract only the number
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果您需要删除除数字之外的任何内容,您可以使用
获取每个文件名分组的所有数字(123test456.ext 将变为 123456),或
获取所有数字组(123test456.ext 将显示 123 和 456)
If all you need is to remove anything but digits, you could use
to get all digits grouped per filename (123test456.ext will become 123456), or
for all groups of numbers (123test456.ext will turn up 123 and 456)
您可以使用这个简单的代码:
You can use this simple code:
只需 bash:
或者使用 bash 4
Just bash:
or, with bash 4
文件名中是否还有其他数字?如果没有:
应该可以。
Perl one liner 可能会工作得更好一点,因为 Perl 只是具有更高级的正则表达式解析,并且使您能够指定数字范围必须在 7 到 10 之间:
Is there any number anywhere else in the file name? If not:
Should work.
A Perl one liner might work a bit better because Perl simply has a more advanced regular expression parsing and will give you the ability to specify the range of digits must be between 7 and 10:
将此类文件放在您运行的目录中:
或使用单个
sed
运行:Having such files in a directory you run:
or with a single
sed
run:这对你有用 -
This will work for you -