0

我有一些文件(.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' 来做到这一点?

4

3 回答 3

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
于 2013-10-09T13:32:45.857 回答
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)}'
于 2013-10-09T15:32:43.233 回答
0
for f in *.txt
do
  f=${f%offs*}
  f=${f#*ampl}
  echo ${f}
done
于 2013-10-09T19:36:44.180 回答