免费注册 查看新帖 |

Chinaunix

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

[文本处理] 关于sed中.*的应用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-06-20 20:01 |只看该作者 |倒序浏览
shell小白,之前承蒙论坛大神提供代码帮助不少,现在主动学习,想掌握sed和awk,现在遇到一个很简单,但是想不明白的问题:这两个代码里就差了 .* (其中.是匹配任意字符,*是匹配多次,但是这两个结果如何解析呢,我不明白的地方是.*合并起来作用是什么???)

ls *.txt|sed 's/\([^.]\)/\1/g'
a.txt
b.txt
c.txt
employee.txt
numbers.txt
path.txt

ls *.txt|sed 's/\([^.]\).*/\1/g'
a
b
c
e
n
p



期待大神指教,O(∩_∩)O谢谢

论坛徽章:
0
2 [报告]
发表于 2017-06-21 16:29 |只看该作者
可能是问题太简单了,大神都不忍心回答了,还是看书去

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2017-06-21 16:47 |只看该作者
回复 1# 蓝色未央

要学习的话
学习的awk就可以了...


s/old/new/

后面被你删除了
  s/\([^.]\).*/\1/

c.txt     
employee.txt

论坛徽章:
0
4 [报告]
发表于 2017-06-21 18:04 |只看该作者
这个是sed分组匹配
上面的是没匹配到,都打印出来了,下面的s/\([^.]\).*/\1/g
意思是\(\)里面为分组,里面的内容[^.]为从开头匹配第一个字符故为每行第一个字符,为一组,
后面的.*匹配每行后面的内容,
\1是匹配前面\(\)第一个分组里面的内容。
理解下来就是:
将整行内容替换第一个分组内容,故输出如下:
a
b
c
e
n
p

论坛徽章:
0
5 [报告]
发表于 2017-06-22 20:32 |只看该作者
回复 3# jason680

嗯呐,sed,awk,python都在进行

论坛徽章:
0
6 [报告]
发表于 2017-06-22 20:32 |只看该作者
回复 3# jason680

嗯呐,sed,awk,python都在进行

论坛徽章:
0
7 [报告]
发表于 2017-06-22 20:35 |只看该作者
回复 4# hl791708501

谢谢这位大神,第一行代码是没有匹配上,第二个代码里的.*相当于提供了一个地址范围,就是整行的内容,这样理解是否正确呢?

论坛徽章:
0
8 [报告]
发表于 2017-06-22 20:49 |只看该作者
回复 4# hl791708501

恩,我试了一下,原先的想法是打印出 符号.之前的内容,现在试着加了一个*(多次匹配),再加上.* ,就可以实现了,O(∩_∩)O谢谢

论坛徽章:
0
9 [报告]
发表于 2017-06-23 16:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP