我正在使用 git bash,所以我想在 Unix 论坛提问是可以的,但我不熟悉 Unix,只会使用ls
、find
和grep
,所以如果我错了,请纠正我。
我有数百个.csv
文件,每个文件可能有数百行。现在我想删除空的 csv 行-- 空的 csv 行不是指只有空格的行,而是指全是逗号 ( ,,,
) 的行。
例如,csv 文件的内容为
Header2,Header3,Header5,Header7
a,b,c,d
,,,
aa,bb,cc,dd
,,,
,,,
aaa,bbb,ccc,ddd
,,,
,,,
,,,
,文件中有数百行,我想将其更新为
Header2,Header3,Header5,Header7
a,b,c,d
aa,bb,cc,dd
aaa,bbb,ccc,ddd
并且有数百个这样的文件,请注意并非所有的 csv 文件都需要更新,目前我正在使用 vim 编辑器的vimgrep RegExPattern folders
命令,它通过正则表达式模式扫描其内容来过滤出目标 csv 文件,例如/,Header5,/
仅过滤出带有 的 csv 文件Header5
;然后我将使用cdo g/RegExPattern/d | update | edit #
可以对每个命中文件运行正则表达式替换的命令,例如在这里我使用cdo g/\v^,*$/d
仅带有逗号的行来删除行。
但是,Vim 会替换并记录每一行删除的操作,因为一个文件中可能有数百个匹配项,并且有数百个 .csv 文件,所以速度非常慢。
有没有办法在 Unix 中实现这个任务?