中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于"sed"命令合并文本文件上下行的问题
« [1] [2] [3] »
作者:
标题: 关于"sed"命令合并文本文件上下行的问题 上一主题 | 下一主题
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『楼 主』:  关于"sed"命令合并文本文件上下行的问题

sed -e :a -e "/\\$/N; s/\\\n//; ta"

可以将行尾为“\”文本的下一行合并到上一行,

请教:怎样改才能同时将行首为“|”的合并到上一行 ???

另外还要删除文本中所有的空行

急用  拜托了

-= 样本文本见附件 =-

[ Last edited by youaoyi on 2008-8-17 at 04:01 PM ]

附件 1: a2.rar (2008-8-17 16:01, 458 bytes,下载次数: 25)
2008-8-17 01:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 2 楼』:  

sed -e :a -e "/\\$/N; s/\\\n//; ta" -e "$!N;s/\n|/|/;ta" -e "P;D" -e "/./!d" 文件.txt

寻思着修改了一个,但是不管用,不知道什么原因。

[ Last edited by youaoyi on 2008-8-17 at 04:27 AM ]

2008-8-17 04:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 3 楼』:  

sed "/^$/d"  文件.txt

单独执行这个,确实能把所有空行删除掉。

2008-8-17 04:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  



  Quote:
sed -e :a -e "/\\$/N; s/\\\n//; ta" 可以将行首为“\”的文本合并到上一行

你听别人说的?还是自己亲自试验过?



2008-8-17 11:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 5 楼』:  

是自己试验过

这个是把行尾为“\”的下一行合并到上一行

2008-8-17 12:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

这样可以吗?
sed "/^$/d" a.txt|sed -e :a -e "/\\$/N; s/\\\n/\\/; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D"




2008-8-17 13:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 7 楼』:  

不行   命令无效

样本如下,最终求生成9条不含空行的文本,

文本中数据行的第一位是已经编好的序号。

[ Last edited by youaoyi on 2008-8-17 at 04:01 PM ]

附件 1: a2.rar (2008-8-17 16:01, 458 bytes,下载次数: 2)
2008-8-17 13:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  

按照你的规则,应该是10行啊,"徐"和"秀清"中间的那个换行不符合删除要求啊。



2008-8-17 13:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 9 楼』:  

是的  整理例子时  忘记在这条数据后“徐”之后加上“\”了,抱歉。

已经更改了附件

2008-8-17 14:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  

你的sed版本的问题吧

  Quote:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\ProgramMy\GnuWin32>sed "/^$/d" a.txt|sed -e :a -e "/\\$/N; s/\\\n//; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D"
1|370105|倒闭|经济原因|韩翌|200537015018509|49307.5|
2|370108|倒闭|其它:|丁伟东|20083701085005903|10.0|
3|370707|倒闭|其它:|陈汝\芳|2008370707000949|10.0|
4|372407|倒闭|其它:|徐秀清|2008375007437|1990.0|
5|372804|倒闭|经济原因|洪振飞|2002372878229|2550.0|
6|372407|倒闭|其它:|边爱玲|200837215015010082|3990.0|
7|372909|倒闭|其它:|杨留更|200837290015002744|9990.0|
8|370454|倒闭|其它:|孟庆国|200837045015000127|10.0|
9|370454|倒闭|其它:|孟庆国|2008370405015000127|10.0|

C:\ProgramMy\GnuWin32>sed --version
GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.

[ Last edited by HAT on 2008-8-17 at 03:50 PM ]



2008-8-17 15:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 11 楼』:  

不是的    麻烦下载下附件 a2.txt

原来的是我手工录入的,可以达到目的。

但是第10条之后的是原本的数据,就不行了。

2008-8-17 16:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 12 楼』:  

一楼、七楼都已经更新了附件。

2008-8-17 16:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 13 楼』:  

你是说"徐慧"那一行对吧,那里有一个Windows下不可见的字符,你用16进制编辑器打开看看就知道了。
你把"|徐慧|"删除,重新输入一遍就可以了。



2008-8-17 16:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
youaoyi
初级用户





积分 154
发帖 67
注册 2007-10-31
状态 离线
『第 14 楼』:  

是的,但是象这种情况在文本中非常非常多,
这种不可见的字符,能否在sed处理时一并删除掉呢?
数据量很大,拜托了。

2008-8-17 16:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 15 楼』:  

你的文本文件是不是从Linux或者Unix系统里面拷过来的?



2008-8-17 16:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: