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

时间:2013-10-09 13:28:15

标签: 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'来做到这一点?

3 个答案:

答案 0 :(得分:1)

使用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

答案 1 :(得分:0)

使用awk

awk -F"ampl|off" '{print $2}'
0.6
0.4
0.2
0.4
0.2
0.5
0.2
0.4

或使用固定位置

awk '{print substr($0,16,3)}'

答案 2 :(得分:0)

for f in *.txt
do
  f=${f%offs*}
  f=${f#*ampl}
  echo ${f}
done