将c程序文件x.c中的语句中的多余空白行删除,然后存入另一个文件x_bak.c。在Linux下编写、编译、运行。
先 cp x.c x_bak.c
然后 vim x_bak.c
最后:g/^$/d g指定全局搜索,^$用于匹配空白字符行,d表示删除匹配项。
保存退出
编译运行
例如有这样一段代码,名字叫main.c
方法一
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}
它遇sed,sed说,你的Tab(\t)键,回车(windows是\r\n,linux是\n),空格,只有这些东西占一行的,统统删除,将修改后的文件内容存到了other.c文件
lkmao@ubuntu:~/01/dir$ sed -r '/^[\t\r\n ]*$/d' main.c > other.c
lkmao@ubuntu:~/01/dir$ cat other.c
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}
lkmao@ubuntu:~/01/dir$ cat main.c
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}
lkmao@ubuntu:~/01/dir$
然后空行就没有了。
方法二
正则表达式中,\s表示任意空白字符,[^\s]表示非空字符,grep -E '[^\s]' main.c表示包含非空字符的行。
csdn@ubuntu:~$ grep -E '[^\s]' main.c > other.c
csdn@ubuntu:~$ cat other.c
#include <stdio.h>
int main(void)
{
printf("hello world\n");
return 0;
}
csdn@ubuntu:~$
一行命令解决:
cat x.c|grep -v "^$"|xargs -i echo {} > x_bak.c