免费注册 查看新帖 |

Chinaunix

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

sed一例,求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-25 03:32 |只看该作者 |倒序浏览
cat 1
[执行]人物名(35479821) 完成任务*12345
[执行]人物名1(35479821) 完成任务*12345
[执行]人物名3(35479821) 完成任务*12345
[执行]人物名10(35479821) 完成任务*12345

我想把  人物名   这几个字提取出来。 假设有很多条记录, 其他都相同,就是人物名是不定的,可能是三个字也可能是四个或五个字。
我想取一个范围。
sed 's/\].*//g' 1
  得出的是
[执行35479821) 完成任务*12345

我想反过来 只提取出

人物名
人物名1
人物名3
人物名10


要怎么做呢。

我试了下

sed 's/[^\].*]//g' 1  这是不行的。

希望有人能看懂我的意思,给解答一下啊。

论坛徽章:
0
2 [报告]
发表于 2007-06-25 03:43 |只看该作者
刚刚想到了可以用多个管道
sed 's/\[.*\]//g' 1|sed 's/(.*//g'

有没有更简便的方法呢?不用管道。

论坛徽章:
0
3 [报告]
发表于 2007-06-25 03:45 |只看该作者
这么晚了,肯定是没人了,呵呵

希望早起的高手给看看咯。

论坛徽章:
0
4 [报告]
发表于 2007-06-25 06:38 |只看该作者
sed
  1. sed 's/\[.*\]\(.*\)(.*$/\1/' urfile
复制代码


awk
  1. awk -F'[](]' '{print $2}' urfile
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-06-25 08:43 |只看该作者
原帖由 __lxmxn__ 于 2007-6-25 06:38 发表
sed
  1. sed 's/\[.*\]\(.*\)(.*$/\1/' urfile
复制代码


awk
  1. awk -F'[](]' '{print $2}' urfile
复制代码



.*和1是什么意思呢??

论坛徽章:
0
6 [报告]
发表于 2007-06-25 11:11 |只看该作者
sed 's/\[.*\]\(.*\)(.*$/\1/' urfile

能不能解释下呢。
是把一行分成三段? []之间  ()之间  和  (.*
\1 代表什么意思呢。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
7 [报告]
发表于 2007-06-25 11:46 |只看该作者
意思是把"]"前的删除,"("后的删除
sed -e "s/^[^\]*\]//;s/[(].*$//" urfile

论坛徽章:
0
8 [报告]
发表于 2007-06-26 00:07 |只看该作者

回复 5楼 tommy2004 的帖子

.* 代表任意数目的任意字符
\1 表示对前面第一个\( \)内的字符的引用.

论坛徽章:
0
9 [报告]
发表于 2007-06-26 00:07 |只看该作者
原帖由 zongyaotang 于 2007-6-25 11:46 发表
意思是把"]"前的删除,"("后的删除
sed -e "s/^[^\]*\]//;s/[(].*$//" urfile

有必要用[^\]吗?

我觉得没有必要。

论坛徽章:
0
10 [报告]
发表于 2007-06-26 08:43 |只看该作者
sed:
cat file |sed 's/.*]\([^(]\+\)(.*/\1/'

awk:
cat file  |awk -F'[](]' '{print $2}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP