免费注册 查看新帖 |

Chinaunix

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

[求助]替换文本第一匹配的行,请帮我看看有什么问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-07-27 14:05 |只看该作者
回复 8# Shell_HAT


    拓展一下,那如果我想替换前2个呢?^ ^

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
12 [报告]
发表于 2010-07-27 14:17 |只看该作者
sed 's/A/B/;q' 有什么不对的?把第一个A替换为B

论坛徽章:
0
13 [报告]
发表于 2010-07-27 15:08 |只看该作者
回复 11# 好看的附件

补救一下吧
  1. $ cat file
  2. hello world
  3. TANG abcd
  4. hello world
  5. hello world
  6. TANG jkl
  7. hello world
  8. hello world
  9. hello world
  10. TANG abcd
  11. TANG jkl

  12. $ awk '{if(a[T]==2){print $0;next}else if(gsub(/^TANG/,"sohu")){T=1;a[T]++}else T=0}1' file
  13. hello world
  14. sohu abcd
  15. hello world
  16. hello world
  17. sohu jkl
  18. hello world
  19. hello world
  20. hello world
  21. TANG abcd
  22. TANG jkl
复制代码

论坛徽章:
0
14 [报告]
发表于 2010-07-27 15:11 |只看该作者
回复 13# bbgg1983


    多谢,学习了^^

论坛徽章:
0
15 [报告]
发表于 2010-07-27 15:12 |只看该作者
回复 12# expert1


    这个可以,但是多行的时候MS不能这么用

论坛徽章:
0
16 [报告]
发表于 2010-07-27 15:25 |只看该作者
我也来一个
$ awk '{ if($1~/^TANG/){if(a[$1]++<2){$1="shuo"};print $0} else{print $0} }' 23
hello world
shuo abcd
hello world
hello world
shuo jkl
hello world
hello world
hello world
TANG abcd
TANG jkl

论坛徽章:
0
17 [报告]
发表于 2010-07-27 15:27 |只看该作者
回复 12# expert1
这个是不对的,除非每行都是TANG开头,否则,这个语句不管替换有没有成功都会执行q命令,也就是退出。

论坛徽章:
0
18 [报告]
发表于 2010-07-27 15:30 |只看该作者
回复 17# bbgg1983


    人家的要求就是这样:
文本文件中有多行以TANG开头的行,我只想把第一个以TANG为开始的行替换为shuo.

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
19 [报告]
发表于 2010-07-27 15:34 |只看该作者

哎,这个贴有意思。我试过了没问题。咋大家都想那么复杂呢?

论坛徽章:
0
20 [报告]
发表于 2010-07-27 15:35 |只看该作者
sed "s/^TANG.*/shuo/;q" tang.txt
bbgg1983 发表于 2010-07-27 13:00



    你这个是因为q命令没有条件匹配,也就是读入一行就退出。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP