Chinaunix

标题: 求助:若第2列包含ep4a或ep4 ,则在最后一列显示1/1-4 [打印本页]

作者: itpark    时间: 2014-05-22 19:38
标题: 求助:若第2列包含ep4a或ep4 ,则在最后一列显示1/1-4
本帖最后由 itpark 于 2014-05-22 19:38 编辑

请问下面的脚本,如何在最后一列加上这样的内容

若第2列包含ep4a或ep4 ,则在最后一列 加上Slot ID 列所显示的数字+1-4, (比如1/1-4)
若第2列包含ep16 ,则在最后一列 加上Slot ID 列所显示的数字+1-16, (比如2/1-16)
若第2列包含2pon ,则在最后一列 加上Slot ID 列所显示的数字+1-2, (比如9/1-2)


谢谢

Slot ID    Create Type             Actual Type             State
----------------------------------------------------------------
1          iscom5800e-ep4a         iscom5800e-ep4a         normal
2          iscom5800e-ep16         iscom5800e-ep16         normal
3          iscom5800-2pon          iscom5800-2pon          normal
4          iscom5800-2pon          iscom5800-2pon          normal
5          iscom5800-2pon          iscom5800-2pon          normal
6          iscom5800e-10gex2-2ge   iscom5800e-10gex2-2ge   normal
7          iscom5800e-smcb         iscom5800e-smcb         normal
8          iscom5800e-smcb         iscom5800e-smcb         normal
9          iscom5800-2pon          iscom5800-2pon          normal
10         iscom5800-2pon          iscom5800-2pon          normal
11         null                    null                    missing
12         null                    null                    missing
13         null                    null                    missing
14         power                   power                   normal
15         power                   power                   normal
作者: Herowinter    时间: 2014-05-22 20:01
本帖最后由 Herowinter 于 2014-05-22 20:03 编辑

回复 1# itpark
  1. awk '$2~/ep4a|ep4/{$0=$0" "$1"/1-4"} $2~/ep16/{$0=$0" "$1"/1-16"} $2~/2pon/{$0=$0" "$1"/1-2"}1' i
  2. Slot ID    Create Type             Actual Type             State
  3. ----------------------------------------------------------------
  4. 1          iscom5800e-ep4a         iscom5800e-ep4a         normal 1/1-4
  5. 2          iscom5800e-ep16         iscom5800e-ep16         normal 2/1-16
  6. 3          iscom5800-2pon          iscom5800-2pon          normal 3/1-2
  7. 4          iscom5800-2pon          iscom5800-2pon          normal 4/1-2
  8. 5          iscom5800-2pon          iscom5800-2pon          normal 5/1-2
  9. 6          iscom5800e-10gex2-2ge   iscom5800e-10gex2-2ge   normal
  10. 7          iscom5800e-smcb         iscom5800e-smcb         normal
  11. 8          iscom5800e-smcb         iscom5800e-smcb         normal
  12. 9          iscom5800-2pon          iscom5800-2pon          normal 9/1-2
  13. 10         iscom5800-2pon          iscom5800-2pon          normal 10/1-2
  14. 11         null                    null                    missing
  15. 12         null                    null                    missing
  16. 13         null                    null                    missing
  17. 14         power                   power                   normal
  18. 15         power                   power                   normal
复制代码

作者: expert1    时间: 2014-05-22 20:27
体力活
作者: yestreenstars    时间: 2014-05-22 20:57
若第2列包含ep4a或ep4

对于正则来说,只需要写ep4就可以了~{:2_172:}
作者: Herowinter    时间: 2014-05-22 21:00
回复 4# yestreenstars
...机械翻译楼主需求的默默路过...
   
作者: itpark    时间: 2014-05-23 15:10
非常感谢!帮了大忙了

回复 2# Herowinter


   
作者: jason680    时间: 2014-05-23 15:31
回复 2# Herowinter

combine your code together

$ awk 'match($0,/ep([0-9]+)|([0-9]+)pon/,a){$0=$0" "$1"/1-"a[1]a[2]}1' FILE
  1. Slot ID    Create Type             Actual Type             State
  2. ----------------------------------------------------------------
  3. 1          iscom5800e-ep4a         iscom5800e-ep4a         normal 1/1-4
  4. 2          iscom5800e-ep16         iscom5800e-ep16         normal 2/1-16
  5. 3          iscom5800-2pon          iscom5800-2pon          normal 3/1-2
  6. 4          iscom5800-2pon          iscom5800-2pon          normal 4/1-2
  7. 5          iscom5800-2pon          iscom5800-2pon          normal 5/1-2
  8. 6          iscom5800e-10gex2-2ge   iscom5800e-10gex2-2ge   normal
  9. 7          iscom5800e-smcb         iscom5800e-smcb         normal
  10. 8          iscom5800e-smcb         iscom5800e-smcb         normal
  11. 9          iscom5800-2pon          iscom5800-2pon          normal 9/1-2
  12. 10         iscom5800-2pon          iscom5800-2pon          normal 10/1-2
  13. 11         null                    null                    missing
  14. 12         null                    null                    missing
  15. 13         null                    null                    missing
  16. 14         power                   power                   normal
  17. 15         power                   power                   normal
复制代码

作者: Herowinter    时间: 2014-05-23 15:36
回复 7# jason680
多谢指点,我都没去找规律,结果的数字
4 16 2其实是在前面的正则匹配那个串里出现了,
这样做好多了。

   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2