linux下删除c程序文件中的空白行,并存入另一个文件

将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