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?抬头看看我发现的并不是真的适用于这种情况.
请不要考虑上面显示的额外空行.
提前致谢
要删除空白行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开关.