Linux:如何从文件名中提取信息?

标签 linux grep find cat

我有一些文件(.txt),名字是:

run_freq100ampl0.6offs0.8_1
run_freq100ampl0.4offs1.1_1
run_freq100ampl0.2offs1.0_1
run_freq100ampl0.4offs1.2_1
run_freq100ampl0.2offs1.1_1
run_freq100ampl0.5offs0.8_1
run_freq100ampl0.2offs1.2_1
run_freq100ampl0.4offs0.8_1

我想得到放大器的数量,比如

0.6
0.4
0.2
0.4
0.2
0.5
0.2
0.4

我如何在 Linux 中使用“find”、“grep”或“cat”来做到这一点?

最佳答案

使用grep:

grep -Po '(?<=ampl).*(?=offs)' input

例子:

$ grep -Po '(?<=ampl).*(?=offs)' <<< "run_freq100ampl0.2offs1.1_1"
0.2

使用sed:

$ sed 's/.*ampl\(.*\)offs.*/\1/' <<< "run_freq100ampl0.2offs1.1_1"
0.2

关于Linux:如何从文件名中提取信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273482/

相关文章:

bash - 在大型数据集上使用 grep 或 fgrep 循环非常慢

bash - 如何将 stderr 重定向到文件?

visual-studio-2010 - Visual Studio 单击“查找结果”在错误的窗口中打开代码

bash - 查找并删除具有相同前缀但不同扩展名的文件(即 *.flac 和 *.mp3)

c++ - 如何循环 Blowfish Crypto++

c - FIN扫描程序设计难点

grep - 反向匹配的异常 grep 行为

bash - grep -c 在使用 set -e 不匹配时杀死脚本

用于显示哪些键盘输入输出的 Linux、Unix 或 OS X 工具?

linux - 如何为 Qt 应用程序创建 'install' 包?