Linux正则匹配按行输出

我的原始数据及是一个csv文件,它是这样的

Data,9,record,timestamp,"896018545",s,position_lat,"504719750",semicircles,position_long,"-998493490",semicircles,distance,"10.87",m,altitude,"285.79999999999995",m,speed,"1.773",m/s,unknown,"3929",,unknown,"1002",,enhanced_altitude,"285.79999999999995",m,enhanced_speed,"1.773",m/s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Data,9,record,timestamp,"896018560",s,position_lat,"504717676",semicircles,position_long,"-998501870",semicircles,distance,"71.85",m,altitude,"285.0",m,speed,"5.533",m/s,unknown,"3924",,unknown,"1001",,enhanced_altitude,"285.0",m,enhanced_speed,"5.533",m/s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Data,9,record,timestamp,"896018566",s,position_lat,"504716354",semicircles,position_long,"-998506792",semicircles,distance,"108.02",m,altitude,"284.0",m,speed,"6.485",m/s,unknown,"3919",,unknown,"1001",,enhanced_altitude,"284.0",m,enhanced_speed,"6.485",m/s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Data,9,record,timestamp,"896018575",s,position_lat,"504714055",semicircles,position_long,"-998515244",semicircles,distance,"170.23",m,altitude,"284.0",m,speed,"6.951",m/s,unknown,"3919",,unknown,"1001",,enhanced_altitude,"284.0",m,enhanced_speed,"6.951",m/s,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

我现在想把这样一个数据集整理成另外一个csv文件,其中第一行header是timestamp, position_lat, position_long, disitance, altitude, speed, 然后具体数值就是这些单词后面的第一个数。

我试着用grep正则表达式提取出来了里面用引号引用的数字,

grep 'Data,9' assets/ride.csv | grep -P '("[0-9.-]+")' -o

结果显示的是不是按他原本的行提取出来的数字,而是每一串数字是一个单独的行,像这样:

要怎么做能让原csv里面同一行的数字提取出来之后也显示在同一行并用逗号分隔,而不是每个数字单独出来一行呢??

#!/usr/bin/python
import re,sys
if __name__ == "__main__":
    filename=sys.argv[1]
    with open(filename,"rb") as fd:
        while True:
            data = fd.readline()
            if not data:
                break
            print(",".join(re.findall('"(?:\\+|-)?\\d+(?:\.\\d+)?"',data)))

# 调用格式
./test.sh input.csv