为什么简单的 sed 命令无法处理我从 EXO 仪器下载的原始 csv 文件?

为什么简单的 sed 命令无法处理我从 EXO 仪器下载的原始 csv 文件?

我从 EXO 仪器下载了数百个 csv 文件,我想重新格式化它们。每个文件的第一部分包含有关仪器的一般信息,后面是带有标题和测量值的表格。

我的目标是删除这些文件中的所有内容,直到我的标题,标题以“日期”开头。使用以下命令,这在练习文件上无缝运行:

#!/bin/bash

sed '/Date/,$!d' test.csv > newfile.csv

问题是,当我尝试在原始 csv 数据文件上运行此命令时,输出文件为空。如果我将此原始数据文件复制并粘贴到新工作表中并将其保存为 csv 文件,它就可以正常工作。我可以使用 sed 命令替换数字并使用行号删除原始数据文件中的特定行,所以我知道 sed 通常会访问这些原始 csv 文件。有人知道我的问题的根源可能在哪里吗?谢谢,如果需要澄清,请告诉我。

文件示例:

sep=,
Unit ID:,
User ID:,
Site:,hrA
Log Interval:,60.00

Model, Submodel, S/N, S/W Ver
Handheld,2, 18C102285,1.0.33
4P Sonde,1, 17F104914,1.0.73
CT,1, 17F101355,3.0.5
ODO,1, 15J101782,3.0.0
pH/ORP,1, 18F103460,3.0.0
Turbidity,1, 15H104135,3.0.0
Depth,3, 17E101397,3.0.0

Date,Time,°C,mmHg,DO %,DO mg/L,DO %L,SPC-uS/cm,TDS mg/L,SAL-ppt,pH,ORP mV,NTU,Chl RFU,Chl ug/L,DEP m,Lat,Lon
07/22/2019,08:20:22,24.861,757.7,98.0,8.12,98.7,5.6,3.629,0.00,7.15,276.5,6.20,,,0.000, 41.93080,-70.06403,

文件示例:

在此处输入图片描述

答案1

我已经测试了您的输入文件并且没有问题,在 win 和 linux 中使用行尾。

请尝试使用 grep:

<test.csv grep -P '^(Date|[0-9]+/)' > newfile.csv

这不完全是您所要求的,但我希望它对您有用。

相关内容