![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 04:30 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [讨论]sed,将一行中第2到第6个字符替换成*号 |
| 可打印版本 1,248 / 9 |
| 第1楼 pooronce | 发表于 2008-07-16 00:00 |
| 中级用户 发帖 250 积分 484 | |
|
[讨论]sed,将一行中第2到第6个字符替换成*号 各位玩sed的朋友试试吧
刚开始觉得简单,但后来发现有点问题,就是不足6个字符的行,容易给多加出*号来 思考了一会儿,弄了个方案来,但很长,不满意,暂时就不贴出来献丑了,先看看各位朋友的解决方案吧 xD |
|
| 第2楼 pooronce | 发表于 2008-07-16 00:06 |
| 中级用户 发帖 250 积分 484 | |
|
试了下,用gawk来解决倒是很简单
gawk 'BEGIN{FS=OFS=""}{a=NF;for (i=2;i^<7;i++) $i="*";NF=a;print}' ee.txt>aa.txt 再想起来,就算直接用dos批处理来做也简单的 不过还是试试用sed吧,当是个训练,嘿嘿 |
|
| 第3楼 HAT | 发表于 2008-07-16 10:10 |
| 版主 发帖 5,017 积分 9,023 | |
| 第4楼 pooronce | 发表于 2008-07-17 01:18 |
| 中级用户 发帖 250 积分 484 | |
Originally posted by HAT at 2008-7-16 10:10 AM: 误解意思了,第2到第6个,也就是5个字符变星号 另外顶楼就说了,要注意的是,不够6个字符的行,不小心会多加出星号来,比如只有3个字符的行,要么就是没替换到,要么呢就是给多加了3个星号出来 |
|
| 第5楼 pooronce | 发表于 2008-07-17 14:18 |
| 中级用户 发帖 250 积分 484 | |
|
贴一下我的解决方案吧:
|
|
| 第6楼 HAT | 发表于 2008-07-17 17:12 |
| 版主 发帖 5,017 积分 9,023 | |
|
CU有人给出了一个简洁的方法
|
|
| 第7楼 26933062 | 发表于 2008-07-17 17:24 |
| 银牌会员 发帖 879 积分 2,268 | |
Originally posted by HAT at 2008-7-17 17:12: 赞,确实是高。。。 这样的代码就向魔术,不知道答案前觉得高深莫测,知道后发现确实简单。! |
|
| 第8楼 pooronce | 发表于 2008-07-18 16:26 |
| 中级用户 发帖 250 积分 484 | |
Originally posted by HAT at 2008-7-17 05:12 PM: 原来可以这样确定匹配空间的,太好了,学到了 xD 有这方法,很多地方都简单多了,像上面,害得我转n个圈用循环才解决好哪-_-# btw:请问,你说的CU是指哪里啊 |
|
| 第9楼 HAT | 发表于 2008-07-18 16:45 |
| 版主 发帖 5,017 积分 9,023 | |
|
CU: ChinaUnix
http://bbs.chinaunix.net/forum-24-1.html |
|
| 第10楼 pooronce | 发表于 2008-07-18 17:48 |
| 中级用户 发帖 250 积分 484 | |
|
噢。。。原来是chinaunix啊,原来兄弟混迹那里的 xD
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |