免费注册 查看新帖 |

Chinaunix

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

[文本处理] shell处理满足条件替换问题,谢谢! [复制链接]

论坛徽章:
3
2015亚冠之布里斯班狮吼
日期:2015-06-25 18:46:20程序设计版块每日发帖之星
日期:2015-09-17 06:20:0015-16赛季CBA联赛之江苏
日期:2017-01-09 21:37:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-18 18:13 |只看该作者 |倒序浏览
我有N多文件,每个文件里面就三列值,现在要操作第三列。只需要要:-8<第三列值<8

如果第三列值大于8,就用8替换。
如果第三列值小于-8,就用-8替换。用shell该怎么去实现呢,谢谢!

第一列        第二列        第三列
105.50        28.50        -7.4772
106.00        28.50        -6.5020
106.50        28.50        -6.5020
107.00        28.50        -6.5020
97.00        28.00        -6.5020
97.50        28.00        -4.5514
98.00        28.00        19.1808
98.50        28.00        49.4148             *** 49.4148 大于8,用8替换49.4148作为第三列值
99.00        28.00        -89.0767            ***-89.0767小于-8,用-8替换-89.0767作为第三列值
99.50        28.00        -357.2822
100.00        28.00        -264.6294
100.50        28.00        62.7438
101.00        28.00        180.4291
101.50        28.00        107.6073
102.00        28.00        5.8518
102.50        28.00        -27.9584
103.00        28.00        44.5384
103.50        28.00        67.2952
104.00        28.00        -49.4148
104.50        28.00        -82.5748
105.00        28.00        -29.9090
105.50        28.00        -6.5020
106.00        28.00        -6.5020
106.50        28.00        -6.5020
107.00        28.00        -6.5020
97.00        27.50        -6.5020
97.50        27.50        -7.1521
98.00        27.50        8.0000
98.50        27.50        -8.0000
99.00        27.50        -8.0000
99.50        27.50        -8.0000
100.00        27.50        -8.0000
100.50        27.50        -8.0000
101.00        27.50        8.0000
101.50        27.50        8.0000
102.00        27.50        -8.0000
102.50        27.50        -8.0000
103.00        27.50        8.0000
103.50        27.50        8.0000
104.00        27.50        -1.3004

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [报告]
发表于 2016-05-18 18:31 |只看该作者
回复 1# tengfei0311

  1. awk '{if($3>8)$3=8;else if($3<-8)$3=-8;printf("%s\t%s\t%1.4f\n",$1,$2,$3)}' i
  2. 105.50  28.50   -7.4772
  3. 106.00  28.50   -6.5020
  4. 106.50  28.50   -6.5020
  5. 107.00  28.50   -6.5020
  6. 97.00   28.00   -6.5020
  7. 97.50   28.00   -4.5514
  8. 98.00   28.00   8.0000
  9. 98.50   28.00   8.0000
  10. 99.00   28.00   -8.0000
  11. 99.50   28.00   -8.0000
  12. 100.00  28.00   -8.0000
  13. 100.50  28.00   8.0000
  14. 101.00  28.00   8.0000
  15. 101.50  28.00   8.0000
  16. 102.00  28.00   5.8518
  17. 102.50  28.00   -8.0000
  18. 103.00  28.00   8.0000
  19. 103.50  28.00   8.0000
  20. 104.00  28.00   -8.0000
  21. 104.50  28.00   -8.0000
  22. 105.00  28.00   -8.0000
  23. 105.50  28.00   -6.5020
  24. 106.00  28.00   -6.5020
  25. 106.50  28.00   -6.5020
  26. 107.00  28.00   -6.5020
  27. 97.00   27.50   -6.5020
  28. 97.50   27.50   -7.1521
  29. 98.00   27.50   8.0000
  30. 98.50   27.50   -8.0000
  31. 99.00   27.50   -8.0000
  32. 99.50   27.50   -8.0000
  33. 100.00  27.50   -8.0000
  34. 100.50  27.50   -8.0000
  35. 101.00  27.50   8.0000
  36. 101.50  27.50   8.0000
  37. 102.00  27.50   -8.0000
  38. 102.50  27.50   -8.0000
  39. 103.00  27.50   8.0000
  40. 103.50  27.50   8.0000
  41. 104.00  27.50   -1.3004
复制代码

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
3 [报告]
发表于 2016-05-18 19:35 |只看该作者
  1. perl -anle 'if($F[2]<-8){$F[2]=-8}if($F[2]>8){$F[2]=8}print "@F"' f
复制代码
105.50 28.50 -7.4772
106.00 28.50 -6.5020
106.50 28.50 -6.5020
107.00 28.50 -6.5020
97.00 28.00 -6.5020
97.50 28.00 -4.5514
98.00 28.00 8
98.50 28.00 8
99.00 28.00 -8
99.50 28.00 -8
100.00 28.00 -8
100.50 28.00 8
101.00 28.00 8
101.50 28.00 8
102.00 28.00 5.8518
102.50 28.00 -8
103.00 28.00 8
103.50 28.00 8
104.00 28.00 -8
104.50 28.00 -8
105.00 28.00 -8
105.50 28.00 -6.5020
106.00 28.00 -6.5020
106.50 28.00 -6.5020
107.00 28.00 -6.5020
97.00 27.50 -6.5020
97.50 27.50 -7.1521
98.00 27.50 8.0000
98.50 27.50 -8.0000
99.00 27.50 -8.0000
99.50 27.50 -8.0000
100.00 27.50 -8.0000
100.50 27.50 -8.0000
101.00 27.50 8.0000
101.50 27.50 8.0000
102.00 27.50 -8.0000
102.50 27.50 -8.0000
103.00 27.50 8.0000
103.50 27.50 8.0000
104.00 27.50 -1.3004

求职 : 技术支持/维
论坛徽章:
0
4 [报告]
发表于 2016-05-18 19:57 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2016-05-18 20:47 |只看该作者
  1. awk '$3>8{$3=8} $3<-8{$3=-8} {print}' FILE
复制代码

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
6 [报告]
发表于 2016-05-18 21:26 |只看该作者
本帖最后由 haooooaaa 于 2016-05-18 21:31 编辑

这样也行, 不过好恶心。

换一下,
  1. awk -vs='.0000' '{sub($3,$3>8?8 s:$3<-8?-8 s:$3)}1'
复制代码

论坛徽章:
3
2015亚冠之布里斯班狮吼
日期:2015-06-25 18:46:20程序设计版块每日发帖之星
日期:2015-09-17 06:20:0015-16赛季CBA联赛之江苏
日期:2017-01-09 21:37:58
7 [报告]
发表于 2016-05-18 21:27 |只看该作者
回复 2# Herowinter

谢谢您 搞定!

   

论坛徽章:
3
2015亚冠之布里斯班狮吼
日期:2015-06-25 18:46:20程序设计版块每日发帖之星
日期:2015-09-17 06:20:0015-16赛季CBA联赛之江苏
日期:2017-01-09 21:37:58
8 [报告]
发表于 2016-05-18 21:28 |只看该作者
谢谢!
回复 3# sunzhiguolu


   

论坛徽章:
3
2015亚冠之布里斯班狮吼
日期:2015-06-25 18:46:20程序设计版块每日发帖之星
日期:2015-09-17 06:20:0015-16赛季CBA联赛之江苏
日期:2017-01-09 21:37:58
9 [报告]
发表于 2016-05-18 21:28 |只看该作者
谢谢!回复 5# lll1985911


   

论坛徽章:
3
2015亚冠之布里斯班狮吼
日期:2015-06-25 18:46:20程序设计版块每日发帖之星
日期:2015-09-17 06:20:0015-16赛季CBA联赛之江苏
日期:2017-01-09 21:37:58
10 [报告]
发表于 2016-05-18 21:28 |只看该作者
能解决问题就是好。呵呵 谢谢!回复 6# haooooaaa


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP