免费注册 查看新帖 |

Chinaunix

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

[文本处理] seq 与 sed的一个小困惑. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-02 16:17 |只看该作者 |倒序浏览
测试文件内容如下
test:
a
b1
c
d1
e
f1
g
h1

命令如下
seq 1 4 | while read i; do sed '/1/s/$/\n '$i'/'$i'' test ; done

执行结果相差甚远...     不知命令如何改起。

期望结果
a
b1
1
c
d1
2
e
f1
3
g
h1
4
第一次匹配到 1 在后面添加1
第二次匹配到 1 在后面添加2
第一次匹配到 1 在后面添加3
第二次匹配到 1 在后面添加4



论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
2 [报告]
发表于 2014-12-02 16:26 |只看该作者
是这种效果吗?
awk  '{print $0;if(match($0,"1")){total++;print total}}' 111
a
b1
1
c
d1
2
e
f1
3
g
h1
4

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
3 [报告]
发表于 2014-12-02 16:27 |只看该作者
似乎有问题,a11这种一样可以匹配

论坛徽章:
0
4 [报告]
发表于 2014-12-02 16:30 |只看该作者
回复 2# super皮波


    非常感谢 。 不知是用sed可以实现么.

论坛徽章:
5
白羊座
日期:2014-10-28 11:23:27水瓶座
日期:2015-01-20 10:19:022015亚冠之柏斯波利斯
日期:2015-07-11 18:17:2015-16赛季CBA联赛之同曦
日期:2015-12-23 12:38:582016猴年福章徽章
日期:2016-02-18 15:30:34
5 [报告]
发表于 2014-12-02 16:35 |只看该作者
  1. $ awk '{print}/1/{print ++a}' file
  2. a
  3. b1
  4. 1
  5. c
  6. d1
  7. 2
  8. e
  9. f1
  10. 3
  11. g
  12. h1
  13. 4
复制代码

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
6 [报告]
发表于 2014-12-02 16:37 |只看该作者
回复 1# jokimina


按照你的思路:
  1. seq 4 | while read i;do sed -i ":a;N;$ ! ba;s/[a-z]1/&\n$i/$i" test;done
复制代码

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
7 [报告]
发表于 2014-12-02 16:40 |只看该作者
sed中变量似乎没有办法++操作,不知道该怎么处理

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
8 [报告]
发表于 2014-12-02 16:45 |只看该作者
回复 1# jokimina
  1. cat file
  2. a
  3. b1
  4. c
  5. d1
  6. e
  7. f1
  8. g
  9. h1

  10. cat file2
  11. 1
  12. 2
  13. 3
  14. 4

  15. sed -e '/1/{R file2' -e '}' file
  16. a
  17. b1
  18. 1
  19. c
  20. d1
  21. 2
  22. e
  23. f1
  24. 3
  25. g
  26. h1
  27. 4
复制代码

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
9 [报告]
发表于 2014-12-02 16:53 |只看该作者
回复 7# super皮波

可以 ++ :
  1. $ cat file
  2. a
  3. b1
  4. c
  5. d1
  6. e
  7. f1
  8. g
  9. h1
  10. $ cat test.sed
  11. #! /bin/sed

  12. p
  13. /[a-z]1/!b
  14. x
  15. /^$/s/^/1/
  16. p
  17. /^9*$/s/^/0/
  18. s/.9*$/x&/
  19. h
  20. s/.*x//
  21. y/0123456789/1234567890/
  22. x
  23. s/x.*//
  24. G
  25. s/\n//
  26. h
  27. $ sed -nf test.sed file
  28. a
  29. b1
  30. 1
  31. c
  32. d1
  33. 2
  34. e
  35. f1
  36. 3
  37. g
  38. h1
  39. 4
复制代码

评分

参与人数 1可用积分 +10 收起 理由
zooyo + 10 很给力!

查看全部评分

论坛徽章:
46
2015小元宵徽章
日期:2015-03-06 15:58:18羊年新春福章
日期:2015-04-14 10:37:422015年亚洲杯之阿曼
日期:2015-04-14 10:41:50NBA常规赛纪念章
日期:2015-05-04 22:32:03NBA季后赛大富翁
日期:2015-05-04 22:34:11菠菜明灯
日期:2015-05-04 22:35:49新奥尔良黄蜂
日期:2015-05-04 22:49:2315-16赛季CBA联赛之广夏
日期:2015-12-11 15:02:342015年亚洲杯之巴勒斯坦
日期:2015-03-04 19:56:562015年亚洲杯之阿联酋
日期:2015-03-04 11:19:04休斯顿火箭
日期:2015-03-02 16:32:11纽约尼克斯
日期:2015-03-02 16:09:04
10 [报告]
发表于 2014-12-02 16:57 |只看该作者
回复 9# ly5066113
没有标号的b都是向后跳到最近的标号位置?


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP