社区
系统维护与使用区
帖子详情
请问AWK或VI如何将源文件中的连续空行变成一个?谢谢了!
mage1982
2008-11-05 03:40:43
源文件如下
aaaaaaaaaaaaaaaaaaaaaaa
(不连续空行,不能删除)
aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaa
(两行连续,消除一行)
aaaaaaaaaaaaaaaaaaaaaaa
(三行连续,消除两行)
aaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaa
...
谢谢前辈们了!!!
...全文
181
10
打赏
收藏
请问AWK或VI如何将源文件中的连续空行变成一个?谢谢了!
源文件如下 aaaaaaaaaaaaaaaaaaaaaaa (不连续空行,不能删除) aaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaa (两行连续,消除一行) aaaaaaaaaaaaaaaaaaaaaaa (三行连续,消除两行) aaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaa ... 谢谢前辈们了!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
快乐田伯光
2008-11-12
打赏
举报
回复
可以这样
sed '/^\s*$/{n;/^\s*$/d}' a.txt > b.txt;
不过这样一次只能删除连续几个空行中的偶数空行,你需要多次运行这个命令才可以把很多连续空行的情况合并成一个空行。
once_and_again
2008-11-06
打赏
举报
回复
[Quote=引用 3 楼 zhoujianhei 的回复:]
:%s/\n\n/,/g
[/Quote]:%s 全局替换
\n\n 回车 2个
/,/ 替换为 ,
g 全局
once_and_again
2008-11-06
打赏
举报
回复
[Quote=引用 5 楼 guoli0813 的回复:]
搬板凳,搞学习
[/Quote].
bshawk
2008-11-06
打赏
举报
回复
其实LS joyself兄弟的办法挺好的,如果你硬要自己做下,那么试下如下命令也许(但不一定)可以满足你的要求:
cat yourfile.c | awk '{if ($0!=line) print;line=$0}'
or
cat yourfile.c | uniq
上面这2条语句对连续重复的其它行(非空格行)也会删除只留一行!
good luck!
快乐田伯光
2008-11-06
打赏
举报
回复
看上去不是很好办,如果删除全部空白行的话可以用
g/^\s*$/d
guoli0813
2008-11-05
打赏
举报
回复
搬板凳,搞学习
joyself
2008-11-05
打赏
举报
回复
可以用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]
zhoujianhei
2008-11-05
打赏
举报
回复
:%s/\n\n/,/g
fox000002
2008-11-05
打赏
举报
回复
错了,是替换为两个
fox000002
2008-11-05
打赏
举报
回复
可以搜索多个连续 \n
替换成一个
RHCE redhat学习笔记
redhat学习记录第一章 Linux系统介绍及安装1、Linux 介绍1.1 linux 发展史1.2 开源许可证1.3 关闭系统命令2 系统安装2.1 系统分区2.2 安装选项2.2.1 安装模式选项2.2.2 语言选项2.2.3 安装选项第二章 Linux的基本使用1 系统初始化2 登录方式2.1 图像控制台2.2 虚拟控制台(文本界面)2.3 cockpit控制台登录(web控制台)3 系统激活与取消4 命令提示符/操作提示符第三章 运行命令及获取帮助1 获取帮助1.1 Whatis command
Shell
中
的sed和
awk
的用法
######sed###### 一.sed简介: 1.SED(stream editor)是一项Linux指令,功能同
awk
类似,差别在于,sed简单,对列处理的功能要差一些,
awk
的功能复杂,对列处理的功能比较强大。 2.sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕。 sed 的命令就是在
vi
和 ed/ex 编辑器
中
见到的那些。 sed 把当前正在处理的行保存在
一个
临时缓存区
中
...
shell学习
来自:http://www.cnblogs.com/stephen-liu74/ 零、shell
中
的内部变量: 1. $?: 表示shell命令的返回值. 2. $$: 表示当前shell的pid. 3. $!: 最后
一个
放入后台作业的PID值. 4. $0: 表示脚本的名字. 5. $1--$9,${10}: 表示脚本的第一到
SED与
AWK
学习笔记
1. 基本概念 Sed是
一个
“非交互式”的面向字符流的编辑器。 这个面向字符流就像是我去餐厅点了一道菜让厨师做,菜都是字符,厨师做好后直接送到我面前。所以我只要下达命令就好。 Sed的优点是可以在
一个
地方指定所有的编辑指令,然后通过文件传递一次来执行他们。但是它在每次多于一行的处理能力方面有限制。
Awk
的典型应用是将数据转换成格式化的报表。增强可读性。因此当数据有某种结构
操作系统三剑客命令-grep、sed、
awk
awk
基本原理是逐行处理文件
中
的数据,查找与命令行
中
所给定内容想匹配的模式,如果发现匹配内容,则进行下
一个
编程步骤,如果找不到匹配内容继续处理下一行。sed在处理时一次只读取文件的一行并对这一行进行处理,并且sed将处理后的数据只会显示在屏幕上,并不会对原文件进行修改,所以说sed是
一个
行编辑器。egrep "a{2}" 查询数据
中
a
连续
出现两次的行,2个a以上的行也会 显示,比如一行有aaa,aaaa都会显示出来。s/\n/ /' //末尾处有
一个
空格,表示行号后也有空格。
系统维护与使用区
19,619
社区成员
74,587
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章