中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-29 09:34
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]sed批量替换特殊符号 查看 891 回复 5
楼 主 [讨论]sed批量替换特殊符号 发表于 2009-03-13 13:43 ·  中国 四川 南充 阆中市 电信
初级用户
★★
积分 100
发帖 80
注册 2008-09-12 15:08
17年会员
UID 125478
性别 男
状态 离线
多个文本文件内容相似,其中一个内容如下:

机构|户名|余额|借款日|到期日|客户号|四级|五级
5411|安波|30,000.00|2008-7-29|2009-7-28|54180000907802|正常|正常
5411|安德顺|70,000.00|2008-1-23|2009-1-21|48270000112781|正常|正常
5411|安德阳|80,000.00|2008-6-6|2011-6-5|54110000930267|正常|正常
5411|安光明|28,000.00|2008-10-13|2009-10-12|54220000827030|正常|关注
5411|安和平|10|1999-7-2|2000-1-2|47680000014754|呆滞|可疑


能否用sed命令将该文件所在目录下的所有文本文件中的”|“替换成逗号?
当然,不sed命令也能将”|“替换成逗号,但是我想的是用sed可能效率要快些,是不是?批处理该如何写呢?
2 发表于 2009-03-13 14:01 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
用FR的话
SED 类似,特殊字符前加\表示自身

fr -ric:"\|" -t:"," 1.txt
3 发表于 2009-03-13 14:02 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
这样也可以
fr -f:"|" -t:"," 1.txt
4 发表于 2009-03-14 01:38 ·  中国 四川 南充 阆中市 电信
初级用户
★★
积分 100
发帖 80
注册 2008-09-12 15:08
17年会员
UID 125478
性别 男
状态 离线
要求将多个文件批量替换,而不是只替换一个文件?
5 发表于 2009-03-14 12:06 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
真吃力

fr /s -f:"|" -t:"," *.txt

其它选项:
-s - 包含子目录
-exp - 启用内存扩展算法,将会加倍 fr 的内存使用量,但是很多时候可以极大地
提高执行效率。如果你碰到了性能问题,可以尝试开启该选项。
-stdin - 从标准输入设备获得要查找的内容,并将结果从到标准输出设备(如果未指
定任何文件模板的话,则自动启用该选项)
-stdout - 像平时一样, 从文件中获得输入, 但将结果送到标准输出(而不是写回文
件)
-frc - 显示每个文件内发生的替换次数
-trc - 显示所有文件总共发生的替换次数
6 发表于 2009-03-14 13:05 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线
sed -i "s@\|@,@g;" *.txt

做好备份,这是修改原文件的,慎用
论坛跳转: