删除csv文件中的空行

我有一个有400万行的文件,每行都以char $结尾,但是我在拼写一个网站的时候在行分隔符后面添加了一个新行,所以现在看起来像这样:

fist name, last name, phone, address, postal code, city, region,$ $ fist name, last name, phone, address, postal code, city, region,$ $ 

新行'$'只显示当然,如果我使用:设置列表,但我想用这个文件在mysql中批量插入,我现在有问题。

我想将文件更改为:

 fist name, last name, phone, address, postal code, city, region,$ fist name, last name, phone, address, postal code, city, region,$ 

我怎样才能做到这一点? 用sedawk甚至vi? 抬起头,我发现什么不适用于这种情况。

请不要考虑上面多余的空行。

提前致谢

sed删除空行:

 sed -i '/^$/d' yourfile.csv 

删除由单个$组成的行:

 sed -i '/^$$/d' yourfile.csv 

大多数版本的sed支持-i开关; 如果你的不是,你需要例如sed '/^$$/d' yourfile.csv > newfile.csv

用空格去除空白行比较复杂。 这通常工作:

 sed '/^ *$/d' yourfile.csv 

如果这还不够,请尝试检查标签。 对于老年人sed,这将工作:

 sed '/^[ X]*$/d' yourfile.csv 

这里X是一个制表符,通过Control-V Tab键进入。

较新的sed将采用[ \t\r]*\s*[[:space:]]* ,有时需要-E开关。

grep可以通过匹配(或否定匹配)来对正则表达式进行过滤。 要排除空行:

 grep -v '^$' yourfile.csv > yourfile_fixed.csv 

这里是你的选择:

awk

 awk 'NF' file > tmp && mv tmp file 

使用sed (就地更改,因此请确保使用-i.bak备份您的文件):

 sed -i '/^$/d' file 

vi

 :g/^$/d