当前位置:  技术问答>linux和unix

请问AWK或VI如何将源文件中的连续空行变成一个?谢谢了!

    来源: 互联网  发布时间:2016-04-24

    本文导语:  源文件如下 aaaaaaaaaaaaaaaaaaaaaaa (不连续空行,不能删除) aaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaa (两行连续,消除一行) aaaaaaaaaaaaaaaaaaaaaaa (三行连续,消除两行) aaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaa ... 谢谢前辈们了!...

源文件如下


aaaaaaaaaaaaaaaaaaaaaaa
(不连续空行,不能删除)
aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaa
(两行连续,消除一行)

aaaaaaaaaaaaaaaaaaaaaaa
(三行连续,消除两行)


aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaa
...

谢谢前辈们了!!!

|

可以用Lindent,内核代码里有。
他是调用indent的。所以只要你的机子上有indent即可。

用法很简单:
Lindent file

结果:新文件仍为file,原文件为file~

[code=BatchFile]
[rob@lx4 linux-2.6]$ cat ./scripts/Lindent
#!/bin/sh
PARAM="-npro -kr -i8 -ts8 -sob -l80 -ss -ncs -cp1"
RES=`indent --version`
V1=`echo $RES | cut -d' ' -f3 | cut -d'.' -f1`
V2=`echo $RES | cut -d' ' -f3 | cut -d'.' -f2`
V3=`echo $RES | cut -d' ' -f3 | cut -d'.' -f3`
if [ $V1 -gt 2 ]; then
  PARAM="$PARAM -il0"
elif [ $V1 -eq 2 ]; then
  if [ $V2 -gt 2 ]; then
    PARAM="$PARAM -il0";
  elif [ $V2 -eq 2 ]; then
    if [ $V3 -ge 10 ]; then
      PARAM="$PARAM -il0"
    fi
  fi
fi
indent $PARAM "$@"

[/code]

|
:%s  全局替换
nn 回车 2个
/,/ 替换为 ,
g 全局

|
搬板凳,搞学习

|
可以这样
sed '/^s*$/{n;/^s*$/d}' a.txt > b.txt;
不过这样一次只能删除连续几个空行中的偶数空行,你需要多次运行这个命令才可以把很多连续空行的情况合并成一个空行。

|
其实LS joyself兄弟的办法挺好的,如果你硬要自己做下,那么试下如下命令也许(但不一定)可以满足你的要求:

cat yourfile.c | awk '{if ($0!=line) print;line=$0}'
or
cat yourfile.c | uniq

上面这2条语句对连续重复的其它行(非空格行)也会删除只留一行!

good luck!

|
可以搜索多个连续 n

替换成一个

|
.

|
看上去不是很好办,如果删除全部空白行的话可以用
g/^s*$/d

|
:%s/nn/,/g


|
错了,是替换为两个

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问变成大写或者变成小写的函数是什么
  • 请问我怎样可以由原来的图形界面登陆变成文字登陆?
  • 请问如何才能让REDHAT 7.3的省缺语言变成英文。
  • 请问用JBuilder开发Applet,如果把鼠标指针变成漏斗?
  • 请问在linux下如何将整数变成char类型?
  • 请问我向Oracle库中写汉字,全部变成了乱码,怎样解决啊,急
  • 在ACC变成中要使用发ftp传送文件,但文件名不确定,请问怎么样在程序的FTP中使用字符串变量???
  • turbolinux10中原来是英文操作系统,现在想变成支持中文,请问有什么好方法,如果能通过增加中文包来解决,请提供一点详细的资料。
  • 请问如何把Applet默认的从屏幕上放向下放生长的Y坐标变成从下向上生长的?
  • 我的shell打开的时候,前面的提示符变成了:bash-3.00#,请问如何修改?
  • 请问如何把Java程序变成exe文件
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3