免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: trueno
打印 上一主题 下一主题

[急] 如果用sed在文件的每一行开头都插入一个tab? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-07-23 18:42 |只看该作者
原帖由 walkerxk 于 2008-7-23 18:30 发表

转义就是在自身意义和特殊意义之间转换,不转义是特殊意义,那么转义后当然是自身的意义了。
echo -e "a\n{\nb"|sed '/{/d'

可是在sed里面。
{}用来组织一组命令,比如:
{s/test//g; s/wo//g}

“\{”“\}” 又是用来描述重复次数的。

比较困惑

论坛徽章:
0
32 [报告]
发表于 2008-07-23 19:37 |只看该作者
原帖由 trueno 于 2008-7-23 18:42 发表

可是在sed里面。
{}用来组织一组命令,比如:
{s/test//g; s/wo//g}

“\{”“\}” 又是用来描述重复次数的。

比较困惑



搞明白了。


echo "{1,3}aa" | sed 's/\{1,3\}//g'
aa


echo "{1,3}aa" | sed 's/a\{1,3\}//g'
{1,3}

echo "{1,3}aa" | sed '{s/{1,3}//g;}'
aa

论坛徽章:
0
33 [报告]
发表于 2008-07-23 20:13 |只看该作者
原帖由 trueno 于 2008-7-23 19:37 发表



搞明白了。


echo "{1,3}aa" | sed 's/\{1,3\}//g'
aa


echo "{1,3}aa" | sed 's/a\{1,3\}//g'
{1,3}

echo "{1,3}aa" | sed '{s/{1,3}//g;}'
aa

不对吧,第一句应该是echo "{1,3}aa" |sed 's/{1,3}//g',不然会报错,因为\{1,3\}是前面部分重复1到3次的意思,而前面什么都没有。

论坛徽章:
0
34 [报告]
发表于 2008-07-23 20:19 |只看该作者
原帖由 walkerxk 于 2008-7-23 20:13 发表

不对吧,第一句应该是echo "{1,3}aa" |sed 's/{1,3}//g',不然会报错,因为\{1,3\}是前面部分重复1到3次的意思,而前面什么都没有。



这个没有错,我实验过了,呵呵,这块真有点灵活。


我的另外一个问题:
我想删除没行结尾的 空格 或者 tab ,怎么来实现?

下面这样:
s/ $//g
s/\t$//g
好像不行啊?

论坛徽章:
0
35 [报告]
发表于 2008-07-23 20:23 |只看该作者
原帖由 trueno 于 2008-7-23 20:19 发表



这个没有错,我实验过了,呵呵,这块真有点灵活。


我的另外一个问题:
我想删除没行结尾的 空格 或者 tab ,怎么来实现?

下面这样:
s/ $//g
s/\t$//g
好像不行啊?

但是我这不行,报错。你的效果应该就是去掉{1,3}吧。
我这是可以的:
~> echo -e "abc\td"|sed 's/\t/1/'
abc1d
还有,有$的话就不用g了,因为一行只有一个$。

[ 本帖最后由 walkerxk 于 2008-7-23 20:24 编辑 ]

论坛徽章:
0
36 [报告]
发表于 2008-07-23 20:25 |只看该作者
原帖由 walkerxk 于 2008-7-23 20:23 发表

但是我这不行,报错。你的效果应该就是去掉{1,3}吧。


就是我先前写的形式,我用的是solaris系统,不知道这个有没有关系

论坛徽章:
0
37 [报告]
发表于 2008-07-23 20:35 |只看该作者
原帖由 trueno 于 2008-7-23 20:25 发表


就是我先前写的形式,我用的是solaris系统,不知道这个有没有关系

怪不得,试试用^I代替\t输入方法是CTRL+V+CTRL+I或者是CTRL+V+TAB键。

论坛徽章:
0
38 [报告]
发表于 2008-07-23 20:39 |只看该作者
原帖由 walkerxk 于 2008-7-23 20:35 发表

怪不得,试试用^I代替\t输入方法是CTRL+V+CTRL+I或者是CTRL+V+TAB键。

CTRL+V+可以输入很多控制符,比如回车^M、向上^[[A、向下^[[B、向右^[[C、向左^[[D、ESC^[等,HOME、END、PAGEDOWN、PAGEUP、F1-F12都可以试一下,甚至^V也可以,连按两次CTRL+V就行了。

论坛徽章:
0
39 [报告]
发表于 2008-07-23 20:47 |只看该作者

回复 #34 trueno 的帖子

应该有报错吧

没必要将{}转译的,你是什么sed的?

论坛徽章:
0
40 [报告]
发表于 2008-07-23 20:52 |只看该作者
原帖由 无声无息 于 2008-7-23 20:47 发表
应该有报错吧

没必要将{}转译的,你是什么sed的?

nonGNU sed,solaris还能装GNU sed么?UNIX的sed和linux的sed是不一样的,还有awk和grep。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP