免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1598 | 回复: 8
打印 上一主题 下一主题

请教个sed实现问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-19 11:01 |只看该作者 |倒序浏览
$cat test.txt
t:10:df
a:16:cy
f:8:tq

请教用sed实现为
t:10
a:16
f:8

论坛徽章:
0
2 [报告]
发表于 2007-07-19 11:08 |只看该作者
sed 's/\(.*\)\(:.*\)/\1/' test.txt

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2007-07-19 11:14 |只看该作者
cut -f1-2 -d":" <urfile

论坛徽章:
0
4 [报告]
发表于 2007-07-19 11:19 |只看该作者
呵呵,谢谢了各位,2楼的用法可以讲解一下吗

[ 本帖最后由 itryhangxh 于 2007-7-19 11:23 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-07-19 12:49 |只看该作者
s/\(.*\)\(:.*\)/\1/
s表替换
正则表达式 /\(.*\)\(:.*\)/
    .*      匹配任意字符 用括号括起来
     \(.*\)\(:.*\)
    \1      表示引用上面模式中第一个()内的  .* 匹配的内容,
那么s/\(.*\)\(:.*\)/\1/ 表示将/\(.*\)\(:.*\)/匹配的内容(整行)用第一个()内匹配的替换,这样就相当于把第二个()内匹配的后面的内容删除了。

论坛徽章:
0
6 [报告]
发表于 2007-07-19 15:07 |只看该作者
哦,我大概明白您的意思了,举第一条记录为例 t:10:df
\(.*\)\(:.*\) 表示一整条记录 即 t:10:df
(.*\)表示 t:10
(:.*\)表示 :df
\1表示用(.*\)里的内容t:10 替换\(.*\)\(:.*\) 的内容t:10:df ,就是相当于把(:.*\)的内容:df 删掉了是吧???

论坛徽章:
0
7 [报告]
发表于 2007-07-19 17:02 |只看该作者
awk -F":" '{print $1"\:"$2}' test

论坛徽章:
0
8 [报告]
发表于 2007-07-19 20:39 |只看该作者
原帖由 itryhangxh 于 2007-7-19 15:07 发表
哦,我大概明白您的意思了,举第一条记录为例 t:10:df
\(.*\)\(:.*\) 表示一整条记录 即 t:10:df
(.*\)表示 t:10
(:.*\)表示 :df
\1表示用(.*\)里的内容t:10 替换\(.*\)\(:.*\) 的内容t:10:df ,就是相当于 ...

是的,可以参考7楼的awk的做法,很简介易懂。

论坛徽章:
0
9 [报告]
发表于 2007-07-19 21:03 |只看该作者
原帖由 itryhangxh 于 2007-7-19 11:01 发表
$cat test.txt
t:10:df
a:16:cy
f:8:tq

请教用sed实现为
t:10
a:16
f:8


sed -e 's!:[^:]*$!!'

[ 本帖最后由 chzht001 于 2007-7-24 21:56 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP