![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 05:24 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何用sed合并多行空行为一行 |
| 可打印版本 972 / 3 |
| 第1楼 26933062 | 发表于 2007-06-28 03:57 |
| 银牌会员 发帖 879 积分 2,268 | |
|
如何用sed合并多行空行为一行 看了一晚的教程,感觉学到了不少
但是由于个人天生愚钝,想了一晚,怎么也想不出如何将连续多个空行合并为一行,只写出以下代码,怎么运行都不成功,还请指点指点. sed "/^$/!d;n;:c;/^$/d;n;/^$/b c;G" aaa.txt|more>bbb.txt 我的理解是 首先匹配第一个 空行, ! 忽略,再打印下行如果是空行就用 /^$/d 删除,再打印下一行,由 /^$/b 判断,如果是空行就跳回标签c再删除,直到非空行,就用 G 插入一空行. 代码臃肿而且无效,实在没有思路了,请帮帮忙, 以下是将所有空格替换成一个空格的代码,请看看对不?或是可以更简化吗? sed ":c;s/ / /g;tc" aaa.txt|more>bbb.txt [ Last edited by bjsh on 2007-7-31 at 10:43 AM ] |
|
| 第2楼 bjsh | 发表于 2007-06-28 09:22 |
| 银牌会员 发帖 621 积分 2,000 | |
|
将连续多个空行合并为一行
sed "/^$/{N;/^\n$/D}" test.txt [ Last edited by bjsh on 2007-6-28 at 09:26 AM ] |
|
| 第3楼 bjsh | 发表于 2007-06-28 09:29 |
| 银牌会员 发帖 621 积分 2,000 | |
|
将所有空格替换成一个空格
sed "s/[[:space:]][[:space:]]*/ /g" test.txt 仔细学学 正则表达式; 认认真真的 去 看 sed 的 每一条 指令 的 定义 和 执行步骤; 务必深刻理解; 有些 不是 一遍两遍 能真正理解的. |
|
| 第4楼 26933062 | 发表于 2007-06-28 14:38 |
| 银牌会员 发帖 879 积分 2,268 | |
|
多谢 !!!
/^\n$/ 是什么意识? 看不懂 在/^$/ 中间加一个 \n 不明白 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |