删除csv文件中的空行

use*_*414 5 linux vi bash awk sed

我有一个包含400万行的文件,每行都以char $结尾,但是我在拼接网站时错误地在行分隔符后添加了一行,所以现在它看起来像这样:

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

$

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

$
Run Code Online (Sandbox Code Playgroud)

新行'$'当然只显示我使用:set list,但我正在尝试将此文件用于mysql中的批量插入,现在我遇到了问题.

我想将文件更改为:

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

fist name, last name, phone, address, postal code, city, region,$
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?用sed或awk甚至vi?抬头看看我发现的并不是真的适用于这种情况.

请不要考虑上面显示的额外空行.

提前致谢

Jos*_*sey 7

要删除空白行sed:

sed -i '/^$/d' yourfile.csv
Run Code Online (Sandbox Code Playgroud)

要删除由单个组成的行$:

sed -i '/^$$/d' yourfile.csv
Run Code Online (Sandbox Code Playgroud)

大多数版本的sed支持-i交换机; 如果你没有,你将需要例如sed '/^$$/d' yourfile.csv > newfile.csv.

删除带有空格的空白行更复杂.这通常有效:

sed '/^ *$/d' yourfile.csv
Run Code Online (Sandbox Code Playgroud)

如果这还不够,请尝试检查选项卡.对于旧的sed,这将有效:

sed '/^[ X]*$/d' yourfile.csv
Run Code Online (Sandbox Code Playgroud)

其中,X在此选项卡,通过进入Control-V Tab.

较新的SED公司将采取[ \t\r]*\s*或者[[:space:]]*,有时需要一个-E开关.