中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] [4] »
作者:
标题: 【共享】P者,sed不可不学 上一主题 | 下一主题
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『楼 主』:  【共享】P者,sed不可不学

大家在这个帖子里尽管讨论文本,字符处理的问题,但是回答者尽量用sed处理
只要处理的效率高,也可考虑用sed+for+其他,总之外部工具就只提供sed)------OS: windows NT系列
目的------就是为了大家很好地学习sed,带着问题学,这从实践中学习

我也在学,以前总是半途而废,这个帖子发了,就真正从这里开始sed的学习旅程了,希望有你同行。。。。

1,输出文本时(这5个字在以后省略)怎样显示一个文本的前10行?最后1行?
::显示文本前10行
sed 11,$d a.txt
::显示文本最后一行
sed -n $p a.txt
::显示文本最后一行
sed $!d a.txt
解释:$表示....d,p表示,-n参数....举个例子.....

2,将文本的“;”“,”作为换行符其他字符不变?
sed s/;/\n/g a.txt
解释:......

3,显示文本第20行到25行之间的内容?  ----3楼

4,显示文本的奇数行?偶数行? ----4楼

5,在文本里包含"爱你"的字符换成”【爱你】“,包含“恨你”的字符换成"(恨你)"输出?  ----5楼

6,将文本里的这些字符%:^?<>*/\|&全部替换为空格?  ----6楼

7,怎么显示纯英文行,中文行?中英文混合行?

8,将奇偶行拼接成一行,比如12行合并,34行合并....?

9,如果当前行是以"我"字开头,怎么将它合并到上一行?

10,将每一行首、尾、的所有空格删除?  ----7,12楼

11,给每一行的开头加上"echo"? ----8楼


12,如果某行的行尾是以"。"结尾,就删除"。" ----13楼

13,如果某行多于10个字符,就只显示该行前10个字符?

14,如果某行包含数字,以20个字符为宽度将数字右对齐?

15,倒置所有行,第一行成为最后一行,依次类推.....

16,将行中的字符逆序排列,第一个字成为最后一字,……

17,在每5行后增加一空白行

18,显示所有重复行

19,在每行的第5个与第6个字符之间插入”/*“,第10与第11个字符之间插入"*/"。如果某行少于11个字符补空格后插入。

20,对一个文件夹下的N个TXT文件进行处理,对每一个TXT里的每一行前面都加入000 ----27楼

21,分割文本,将其1到100行保存为a_1.txt,101-200行保存为a_2.txt,以此类推...

22,按如下顺序重新排列行数:1,11;2,12;...;9,19;10,20;后面的行以此类推(每20行一个周期)

23,A文本每行插入到B文本中对应行后面,例如,A的第一行插到B的第一行后面,A的第二行插到B的第二行后面,以此类推。。。
.....

问题还多者呢,先问这些,
大家能想到什么文本处理的问题就发,然后我来回答。我不会了大家回答,

大家在回答时,最好能附上一定的解释,如果自己对所用的参数比较了解,能讲解就更好了,一来方便其他人学习,二来时间长了,自己下次浏览此贴时也是个参考(只是建议,仅此)


好了,征集答案。。。

[ Last edited by plp626 on 2008-6-3 at 07:57 AM ]

   此帖被 +4 点积分        点击查看详情   
评分人:【 ngd 分数: +4  时间:2008-6-19 14:07




山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-5-31 04:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 2 楼』:  

sed工具,各类帮助文档下载:
http://upload.cn-dos.net/img/498.rar

我就收集了这些:
    kongge.txt
    sed1line.txt
    sed.exe
    sed.pdf
    sed_readme.txt
    SED单行脚本快速参考.txt



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-5-31 04:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

3,显示文本第20行到25行之间的内容?
sed -n "20,25p" a.txt


   此帖被 +2 点积分    点击查看详情   
评分人:【 jvive 分数: +2  时间:2008-5-31 17:27




2008-5-31 10:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

4,显示文本的奇数行?偶数行?
sed -n "p;n"  a.txt

sed -n "n;p"  a.txt


   此帖被 +2 点积分    点击查看详情   
评分人:【 jvive 分数: +2  时间:2008-5-31 17:27




2008-5-31 10:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

5,在文本里包含"爱你"的字符换成”【爱你】“,包含“恨你”的字符换成"(恨你)"输出?
sed -e "s/爱你/【爱你】/g" -e "s/恨你/(恨你)/g" a.txt


   此帖被 +2 点积分    点击查看详情   
评分人:【 jvive 分数: +2  时间:2008-5-31 17:28




2008-5-31 10:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

6,将文本里的这些字符%:^?<>*/\|&全部替换为空格?
sed "s/[%:^?<>*/\|&]/ /g" a.txt


   此帖被 +3 点积分     点击查看详情   
评分人:【 plp626 分数: +3  时间:2008-6-1 16:30




2008-5-31 10:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

10,将每一行首、尾、的所有空格删除?
sed "s/^ *//;s/ *$//" a.txt


   此帖被 +3 点积分     点击查看详情   
评分人:【 plp626 分数: +3  时间:2008-6-1 16:30




2008-5-31 13:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

11,给每一行的开头加上"echo"?
sed "s/^/echo/" a.txt


   此帖被 +1 点积分    点击查看详情   
评分人:【 plp626 分数: +1  时间:2008-6-1 16:31




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





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

12,如果某行的行尾是以"。"结尾,就删除"。"
sed "s/。$//" a.txt


   此帖被 +3 点积分     点击查看详情   
评分人:【 plp626 分数: +3  时间:2008-6-1 16:31




2008-5-31 13:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
joyn
中级用户

丶杏灬丶


积分 280
发帖 105
注册 2008-5-6
来自 广西
状态 离线
『第 10 楼』:  

外部命令......

2008-5-31 13:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
radem
高级用户

CMD感染者


积分 691
发帖 383
注册 2008-5-23
状态 离线
『第 11 楼』:  

下来学习。。。



2008-5-31 18:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 12 楼』:  

10,将每一行首、尾、的所有空格删除?
sed "s/^[/t]*//;s/[/t]*$//;s/ //g" file


   此帖被 +3 点积分     点击查看详情   
评分人:【 plp626 分数: +3  时间:2008-6-1 16:31


2008-5-31 19:38
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 13 楼』:  

sed命令好难懂
如果某行的行尾是以"。"结尾,就删除"。"
sed "s/。\t*$//"
删正行
sed  "/。$/d"


   此帖被 +3 点积分     点击查看详情   
评分人:【 plp626 分数: +3  时间:2008-6-1 16:32




简单!简单!再简单!
2008-5-31 21:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 14 楼』:  

VBS...飘过……


9.  替换 回车+我,我



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2008-5-31 22:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 15 楼』:  

13
sed -e "s/\(..........\).*/\1/" if.txt
sed不支持大括号确定字符数,所以只好用10个点来代表10个字符了,用\( \)括起来自动编号为第一组,也就是说把10个字符后面的都清空了。

[ Last edited by pooronce on 2008-6-1 at 09:11 PM ]

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


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



论坛跳转: