![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-25 12:13 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,274 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » sed命令 如何在每一个空行的下一行插入字符 |
| 可打印版本 1,246 / 9 |
| 第1楼 26933062 | 发表于 2007-06-23 23:28 |
| 银牌会员 发帖 879 积分 2,268 | |
|
sed命令 如何在每一个空行的下一行插入字符 批处理中 sed命令 如何在a.txt的每一个空行的下一行非空行的开头插入一个英文字母 d
会 sed 的请帮帮忙, 谢谢!!! [ Last edited by 26933062 on 2007-6-24 at 02:01 AM ] |
|
| 第2楼 bjsh | 发表于 2007-06-24 12:44 |
| 银牌会员 发帖 621 积分 2,000 | |
|
sed '/^$/{:loop;n;/^$/b loop;s/^/d/}' 1.txt
至于 含有 空格 的 "空行" 你自己稍微修改下 就可以了 [ Last edited by bjsh on 2007-6-24 at 12:56 PM ] |
|
| 第3楼 26933062 | 发表于 2007-06-24 13:52 |
| 银牌会员 发帖 879 积分 2,268 | |
|
谢谢 bjsh 版主 的解答,代码可以运行,
但是内容看不懂,只知道是以空行开头,中间的 loop 是什么意识啊? 还请解释一下整句好吗?还有怎么处理含空格的空行我也不会. 刚接触 sed 无奈何 版主的那篇帖子没有实例,新手实在难以看懂,我看了整整一晚, 连一个命令都没搞懂,倒是从其它的地方看到一些教材,搞明白了几个简单的替换. |
|
| 第4楼 bjsh | 发表于 2007-06-24 16:34 |
| 银牌会员 发帖 621 积分 2,000 | |
|
:loop 是 标签;
n 是 打印当前行 并读取下一行到模式空间; 然后执行下一条命令; /^$/b loop 判断模式空间 是否为空行; 如果是 则跳转到 loop 标签处; 构成循环 直到 模式 空间 为 非空行; 然后 s/^/d/ 把开头 替换为d; 实现在开头添加d的效果. |
|
| 第5楼 bjsh | 发表于 2007-06-24 16:42 |
| 银牌会员 发帖 621 积分 2,000 | |
|
对了 如果是在 cmd 下运行 请讲 单引号 换成 双引号
|
|
| 第6楼 lxmxn | 发表于 2007-06-24 18:48 |
| 版主 发帖 4,938 积分 11,386 | |
| 第7楼 26933062 | 发表于 2007-06-24 20:57 |
| 银牌会员 发帖 879 积分 2,268 | |
|
非常感谢两位 版主 的解答,
bjsh 版主的解释非常详细,让我又学到了不少东西,谢谢,再次表示感谢!!! lxmxn 版主 的代码能达到我的要求,即: 排除含 空格 的 空行 但我不明白后面的 Tc 是干什么的? 还有我发现 将bjsh 版主的代码最后的 ^ 改为 . 也能达到要求,不知是何道理. 难道是这个 . 来判断的??? |
|
| 第8楼 26933062 | 发表于 2007-06-24 21:05 |
| 银牌会员 发帖 879 积分 2,268 | |
|
晕,
测试了一天,人都测晕了,发现两位版主的原来其实都不能将含空格的行当作空行, 看眼花了.......... [ Last edited by 26933062 on 2007-6-24 at 09:39 PM ] |
|
| 第9楼 bjsh | 发表于 2007-06-24 22:28 |
| 银牌会员 发帖 621 积分 2,000 | |
|
呵呵;
还没搞定啊; 我还以为 把空格加上 让你自己写的; sed "/^[ \t]*$/{:loop;n;/^[ \t]*$/b loop;s/^/d/}" 1.txt |
|
| 第10楼 26933062 | 发表于 2007-06-24 23:29 |
| 银牌会员 发帖 879 积分 2,268 | |
|
感谢,太复杂,一下子看不懂,,,,,,,,,,,,,
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |