![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 03:23 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » sed 提取文档内容 |
| 可打印版本 1,041 / 12 |
| 第1楼 26933062 | 发表于 2007-06-25 21:00 |
| 银牌会员 发帖 879 积分 2,268 | |
|
sed 提取文档内容 a.txt内容如下
dslfj @aaa\张三\kjj\工商局\sdf\局长\sdfj \李四\dfj\物资局\sdkfj\科长\ @dsf\王三军\sdkfj\税务局\dslfj\副局长\ jsdf 特点:汉字全在\\内 (如果因\是特殊符号,可以换成其它的符号) 要求用sed命令 只处理 @ 符号开头的行,到下一个以 @ 符号开头的行结束 得到如下结果,注意:有空行 工商局 局长 张三 物资局 科长 李四 税务局 副局长 王三军 如果不行,得到这个结果也可以 工商局局长 张三 物资局科长 李四 税务局副局长 王三军 |
|
| 第2楼 lxmxn | 发表于 2007-06-25 21:25 |
| 版主 发帖 4,938 积分 11,386 | |
| 第3楼 26933062 | 发表于 2007-06-25 22:15 |
| 银牌会员 发帖 879 积分 2,268 | |
|
真牛!!!
还有几个问题想请教 版主 一下 1,sed 处理文档 和文档的大小有关吗?好像从别处看到说处理大的文档时要注意,注意什么?是会出错吗? 2,那么批处理处理文档和大小有关吗? |
|
| 第4楼 26933062 | 发表于 2007-06-25 22:22 |
| 银牌会员 发帖 879 积分 2,268 | |
|
代码好长,请问可以向批处理一样分行写吗?
我是写在批处理中的. |
|
| 第5楼 lxmxn | 发表于 2007-06-25 22:37 |
| 版主 发帖 4,938 积分 11,386 | |
|
sed 又名行编辑器,即一行行的来处理文本的,所以不用担心文件过大而出错。
不能直接在批处理分行写,否则报错。 如果你要将各个命令分行,可以写个sed脚本,用sed命令来调用。 比如上面的 a.sed 的内容: /^@/,/^@/!d |
|
| 第6楼 vkill | 发表于 2007-06-25 22:51 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
Originally posted by lxmxn at 2007-6-25 22:37: 单行超过2048个字符还是会出错的,没有记错的话 |
|
| 第7楼 26933062 | 发表于 2007-06-25 23:07 |
| 银牌会员 发帖 879 积分 2,268 | |
|
多谢,又学习了.
|
|
| 第8楼 26933062 | 发表于 2007-06-25 23:16 |
| 银牌会员 发帖 879 积分 2,268 | |
|
sed脚本里面是不是只要写 引号内的内容就可以了,
我写了个 删除所有符号的脚本,怎么不能运行呢? 内容 s/,/ /g;s/(/ /g;s/)/ /g;s$;$ $g;s/\:/ /g;s/\./ /g;s/?/ /g;s/-//g;s/ / /g s/,/ /g;s/;/ /g;s/(/ /g;s/)/ /g;s/。/ /g;s/:/ /g;s/、/ /g s/女/ /g;s$/$ $g;s/#/ /g 用下面的调用的 sed -n -f a.sed aaa.txt | more>bbb.txt |
|
| 第9楼 lxmxn | 发表于 2007-06-26 00:19 |
| 版主 发帖 4,938 积分 11,386 | |
| 第10楼 26933062 | 发表于 2007-06-26 03:45 |
| 银牌会员 发帖 879 积分 2,268 | |
|
晚上好 lxmxn 又来打搅您了
还是上面的要求,有一点改变 要求: 将==内的占一行,--号内的另起一行,\\内的加一个空格,放在--号内的内容的后面,再加一空行,也就是输出结果同上面一样, dslfj @aaa\张三\kjj=工商局=sdf-局长-sdfj \李四\dfjsdkfj-科长-fg=物资局= @sdkfj=税务局=dslfj-副局长-dsf\王三军\ jsdf |
|
| 第11楼 lxmxn | 发表于 2007-06-26 06:55 |
| 版主 发帖 4,938 积分 11,386 | |
|
这个你自己写一下吧。
总依赖别人不是好事。 |
|
| 第12楼 26933062 | 发表于 2007-06-26 13:43 |
| 银牌会员 发帖 879 积分 2,268 | |
|
s/.*\@\(.*\)\@.*\@\(.*\)\@.*\@\(.*\)\@.*/\2\n\3 \1\n/p
原来是这样,用 \(.*\)\ 定义区域 [ Last edited by 26933062 on 2007-6-27 at 03:39 AM ] |
|
| 第13楼 lxmxn | 发表于 2007-06-27 21:28 |
| 版主 发帖 4,938 积分 11,386 | |
|
Re 10楼 又学习了一下sed,写的比较粗糙。
sed -n "/@/,/@/{!d;H;s/.*=\(.*\)=.*/\1/p;G;s/.*-\(.*\)-.*$/#\1/p;G;s/.*\\\(.*\)\\.*/\1\n/p;}" a.txt|sed "/^#/{s/#//;N;s/\n/ /}" [ Last edited by lxmxn on 2007-6-27 at 09:30 PM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |