中国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不可不学 上一主题 | 下一主题
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 16 楼』:  


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

:: 13,如果某行多于10个字符,只显示每一行的前10个字符
sed -n "/........../{s/\(..........\).*/\1/p}" a.txt | more


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




致精致简!
2008-5-31 22:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 17 楼』:  

晕 13 题跑题了,
变成了 匹配10个字符以上的行,并只显示前10个字符
sed -n "/........../{s/\(..........\).*/\1/p}" a.txt | more



致精致简!
2008-5-31 22:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





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

全部看了一遍:
1
sed -n -e "1,10p;$p" file
::1        用-n禁止输出,这样打印1到10和末行

2
sed -e "s/;/\n/g;s/,/\n/g;" file
::2        简单替换

3
sed -e "20,25!d" file
::3        同你第一个,20到25不清空

4
sed -e "s/.*//g;N;" file
::清空ps并读入下一行,偶行输出
sed -e "1!{s/.*//g;N}" file
::同上,只是跳过第一行,奇行输出

(想下面时出了好点的解决方法:
sed -e "p;N;d" file
::直接打印一行,多读一行,删,奇行输出
sed -e "1d;p;N;d" file
::偶行输出,每一行直接删掉
)


5、
简单替换,不重复了

6、
仍是简单替换,不说了,只是注意转义

7、
这个有点难度,目前还不知道怎么在正则里面表达汉字,同求解

8、
sed -e "N;s/\n//" file
::N读取下一行,替换掉换行符

9、
sed -e "1{x;d};${x;p;x;b};/^5/{x;G;s/\n//;x;b};x" file
::暂时用5代表“我”,用中文的总是不正常,原因未明,期待答案

10
sed -e "s/^\s*//;s/\s*$//;" file
::\s代表空字符,一般是空格和TAB

11、12略


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


2008-5-31 23:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhengruijian
初级用户





积分 54
发帖 24
注册 2008-5-30
状态 离线
『第 19 楼』:  

太好了.
我来说一个.
前提是对一个文件夹下的N个TXT文件进行处理,对每一个TXT里的每一行前面都加入000

2008-5-31 23:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhengruijian
初级用户





积分 54
发帖 24
注册 2008-5-30
状态 离线
『第 20 楼』:  

如何把下面这段字符加入到某个文件夹下的N多个文件的第一行前面,之后回车.保存.
  [ar:LIYANG]
  [ti:CrazyEnglish]
  [al:CrazyEnglish]
  [by:me]
  [00:00.00]

2008-5-31 23:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 21 楼』:  

显示纯英文行
sed -n "/^[a-z A-Z]*$/p" a.txt



致精致简!
2008-5-31 23:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

13,如果某行多于10个字符,只显示每一行的前10个字符

我知道这样可以查找出多余10个字符的行,但是不知道怎样只显示前10个字符。
sed -n "/^.\{10\}/p" a.txt
如果再去调用除sed之外的其它命令的话,不知道是否会违背楼主的要求。



2008-6-1 01:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 23 楼』:  

&&哈哈,论坛掀起了sed热了,这是好事,我精神上绝对支持!
    本人只用纯批,正在考虑学习vbs,原因在任一台电脑上都能操作,而不用人为添
加任何程序和第三方工具,一个字简单的好!



批处理之家新域名:www.bathome.net
2008-6-1 01:43
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





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

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

在Unix下是很容易实现的:
sed '$!N;s/\n/ /' a.txt
但在cmd下调用sed.exe的话,这样做是不行的,不知楼主有何高招?



2008-6-1 01:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hyu029
新手上路





积分 14
发帖 7
注册 2007-12-16
状态 离线
『第 25 楼』:  

近来学写了

2008-6-1 01:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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



  Quote:
Originally posted by 26933062 at 2008-5-31 11:45 PM:
显示纯英文行
sed -n "/^[a-z A-Z]*$/p" a.txt

这个正则表达式写的很正确,在Unix下可以得到正确结果,但是在cmd下调用sed.exe却得不到任何结果。

  Quote:
C:\test>type a.txt
abc
a啊

啊a

ccc

C:\test>sed -n "/^[a-z A-Z]*$/p" a.txt

C:\test>





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





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



  Quote:
Originally posted by zhengruijian at 2008-5-31 11:34 PM:
太好了.
我来说一个.
前提是对一个文件夹下的N个TXT文件进行处理,对每一个TXT里的每一行前面都加入000


sed "s/^/000/" *.txt




2008-6-1 02:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

15,倒置所有行,第一行成为最后一行,依次类推.....
sed -n "1!G;h;$p" a.txt




2008-6-1 17:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





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

每行第一个字成为最后一字 没招了 我估计我学不会这个SED 参数看到我头大
sed "/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//" test.txt

[ Last edited by terse on 2008-6-1 at 05:58 PM ]



简单!简单!再简单!
2008-6-1 17:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

17,在每5行后增加一空白行
sed "n;n;n;n;G;" a.txt




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


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



论坛跳转: