我正在寻找一种从n
文件中删除前csv
行的方法。
基本上,我已经得到了数百个csv文件的转储,其任务是创建可查询的MySQL数据库。这些文件具有非csv格式的图例,占用前~10
行,并在尝试导入到MySQL时引发错误。图例的长度是可变的,因为并非所有文件都具有相同数量的参数。
我正在寻找一种删除图例的方法,我可以找到的唯一模式是第一个csv
元素始终是单词 year 的第二个实例。
文件基本上看起来像这样,我希望每个文件的开头都是小写的 year 的第二个实例。
Legend:
non-csv text...
year: Year
... etc
(csv format) year, month, day, etc...
我看过sed
命令来循环遍历每个文件,但是找不到能完全实现我想要的文件的命令。即:
find . -name "*.csv" |
while read filename;
do
sed -n '/year/,$p' $filename > newFile.csv;
done;
这会删除年的第一个实例之前的所有文本,但是我不熟悉sed
,因此无法弄清楚如何使其跳到第二个实例。我在递归函数中尝试了上述方法,但没有用。
有什么建议吗?
答案 0 :(得分:3)
x
来营救!
awk
答案 1 :(得分:1)
这可能对您有用( GNU sed
):
sed ':a;N;s/year/&/2;Ta;s/.*\n//' file
这将收集行,直到year
再次出现,然后删除直到但不包括当前行的所有行。