如何批量提取文件中指定位置的数据再按一定格式写出到一个文件?


我这里有上千个.asa文件(可用记事本打开),我现在只需要每个文件里面倒数2、3行的数据,如何批量提取文件中指定位置的数据再写出到一个文件?
下面是我的文件内容截图(注: 每个文件里面的内容格式都是一样一样的 ):

请输入图片描述

我现在只需要这两行下面的6个数据(注: 输出文件中每个文件中的这6个数据写成一样,有多少个文件就有多少行数据 ):

请输入图片描述

有一个问题: 文件的命名不是很规范(名字不连续):

请输入图片描述

如何实现我要的功能,求大神指点,最好用shell或是python!

python shell

十八岁出门远行 11 years ago
   
  #!/bin/bash
  

echo "starting..."

files=`ls *.asA`

for f in $files; do
echo $f >> file.out
tail -n 5 $f | awk 'NR==1 || NR==3 {print $0}' | tr -d '\r\n' >> file.out
echo >> file.out
done

echo "finished"

输出结果在file.out中,亲测,可用。

   
  test2.asA
  
-18.17 -14.09 -16.60 1.687 -11.00 -1.170
test.asA
-8.17 -4.09 -6.60 0.687 -1.00 -0.170

补充:
上一版本当遇到文件名中空格或者以"-"开头时会出现问题,版本修改如下:

   
  #!/bin/bash
  
result="result.file"

for fname in *asA
do
echo $fname >> $result
awk 'NR==28 || NR==30 {print $0}' "${fname}" | tr -d '\r\n' >> $result
echo >> $result
done

天使翼之向 answered 11 years ago

Your Answer