中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 12:57
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于"sed"命令合并文本文件上下行的问题 查看 2,693 回复 36
16 发表于 2008-08-17 16:21 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
可能是Unix系统里面拷过来的,只能得到这种文本。
无法在最初提取数据时处理,因为是上面发下来的。

[ Last edited by youaoyi on 2008-8-17 at 04:23 PM ]
17 发表于 2008-08-17 16:35 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
我暂时也没有想到什么办法,帮你在QQ群里面问问吧。
18 发表于 2008-08-17 16:36 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
谢谢 谢谢 拜托了
19 发表于 2008-08-17 16:40 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
还有其他包含不可见字符的行吗?我想看看那些不可见字符是不是相同的。
20 发表于 2008-08-17 17:00 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
因为周末只带回来一个数据文本

暂时在这个文本中找到另外这些

请审阅。
附件
另外一些样本.rar (360 bytes, 下载次数: 7)
21 发表于 2008-08-17 18:08 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
change a2.txt /from "&H0D7C" /to "&H7C"
sed "/^$/d" a2.txt|sed -e :a -e "/\\$/N; s/\\\n//; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D"


change.exe
http://upload.cn-dos.net/img/427.zip
22 发表于 2008-08-17 18:20 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
change.exe
http://upload.cn-dos.net/img/427.zip

此网页打不开,下载不了。辛苦了。

[ Last edited by youaoyi on 2008-8-17 at 06:22 PM ]
23 发表于 2008-08-17 18:28 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
24 发表于 2008-08-17 18:48 ·  中国 广东 韶关 电信
高级用户
★★★
CMD感染者
积分 691
发帖 383
注册 2008-05-23 00:38
18年会员
UID 119451
性别 男
状态 离线
Originally posted by HAT at 2008-8-17 06:08 PM:
change a2.txt /from "&H0D7C" /to "&H7C"
sed "/^$/d" a2.txt|sed -e :a -e "/\\$/N; s/\\\n//; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D"

...


我的测试结果:
1.不可见字符成功删除
2.有/和|字符的没有达到楼主效果(SED 4.1.5)
另:
change 后 a2.txt 变成 A2.TXT 了,能否保持小写呢
25 发表于 2008-08-17 19:04 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
下载完毕

是否这个 change 命令不支持变量的? 运行失败了。

我测试时候是用的程式在附件中,抑或是哪里我写错了?
附件
test.rar (492 bytes, 下载次数: 3)
26 发表于 2008-08-17 19:05 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
因为有很多文本,所以采用了上面这种拖拉文件来执行的方式。
27 发表于 2008-08-17 19:54 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
很多个文件,这样可以满足要求吗?
@echo off
for %%a in ("*.txt") do (
change "%%a" /from "&H0D7C" /to "&H7C"
sed "/^$/d" "%%a"|sed -e :a -e "/\\$/N; s/\\\n//; ta"|sed ":a;$!N;s/\n|/|/;ta;P;D"
)
28 Re 24楼 发表于 2008-08-17 19:56 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
我和楼主都测试成功了,可能是的测试方法有问题吧^_^
保持小写:
ren A.TXT a.txt
29 发表于 2008-08-17 20:20 ·  中国 山东 济宁 联通
初级用户
★★
积分 154
发帖 67
注册 2007-10-31 13:18
18年会员
UID 101283
性别 男
状态 离线
麻烦给看一下25搂的附件,是不是有什么问题?

因为之前都是通过这种方式来处理的。

楼上的程式确实可以处理正确。

但是有三个问题:

1、如何将同目录下各文本文件处理后生成对应源文件名称的新文档?

2、好像是不支持长文件名的处理;

3、通过“>新文档.txt”这种方式输出的话,新文本开头会有下面的字符:

Invalid keyboard code specified
CHANGE pgm by Bruce Guthrie, (c)2001 U.S. Dept of Commerce Revised 03/10/2001
Input file: 原始数据.TXT /-S /ATTR=-H-S-R
Flag file: None created
Temp file: C:\1\{CHANGE}.TMP
Output file: Overwriting input file
Change from >
|<, to >|<
Other settings: /I /BINARY /-TRIM /-ZAPNULL /-VERIFY
20:15:17: Reading C:\1\原始数据.TXT --> C:\1\{CHANGE}.TMP
Bytes read: 11,045,417 Left: 0 Changes made: 23
Copying temporary file over original file...11,045,394 bytes
20:15:17: Done

当然,问题是已经解决大半了,在此深深表示谢意。

[ Last edited by youaoyi on 2008-8-17 at 08:39 PM ]
30 发表于 2008-08-17 22:13 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
1. 处理之前copy一下就行了
2. 哪个命令不支持长文件名的处理?
3. 如果你用的中文版系统,可以在change之前加一句:
chcp 437>nul & graftabl 936>nul
论坛跳转: