免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk 如何灵活使用分隔符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-12-31 12:06 |只看该作者 |倒序浏览
本帖最后由 ljmmail 于 2016-12-31 21:38 编辑
  1. #/bin/awk
  2. ## 这是一组 在 linux 的 bash 下使用的  awk 测试程序
  3. ## awk 中的特殊字符包含了 . ? + ^ $ 

  4. ## 处理 @@ 分隔符,解析正确
  5. echo  "字段1@@字段2@@字段3@@字段4" | awk -F "@@" '{ printf("@@-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'


  6. ## 处理 ## 分隔符,解析正确
  7. echo  "字段1##字段2##字段3##字段4" | awk -F "##" '{ printf("##-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'


  8. ## 处理 #! 分隔符,解析正确
  9. echo  "字段1#!字段2#!字段3#!字段4" | awk -F "#!" '{ printf("#!-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'


  10. ## 处理 #& 分隔符,解析正确
  11. echo  "字段1#&字段2#&字段3#&字段4" | awk -F "#&" '{ printf("#&-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'

  12. ## 处理 :: 分隔符,处理正确
  13. echo  "字段1::字段2::字段3::字段4" | awk -F "::" '{ printf("::-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'


  14. ## 处理 !! 分隔符,处理正确
  15. echo  "字段1!!字段2!!字段3!!字段4" | awk -F "!!" '{ printf("!!-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'

  16. ## 处理 $ 分隔符,处理正确
  17. echo  "字段1$字段2$字段3$字段4" | awk -F "[        DISCUZ_CODE_0        ]quot; '{ printf("$-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'

  18. ## 处理 ?? 分隔符,处理正确
  19. echo  "字段1??字段2??字段3??字段4" | awk 'BEGIN {FS="\\?\\?"} { printf("??-->[%d][%s]++[%s]++[%s]++\n", NF, $1, $2, $3) ; }'


  20. ## 处理 .. 分隔符,处理正确
  21. echo  "字段1..字段2..字段3..字段4" | awk 'BEGIN {FS="\\.\\." } { printf("..-->[%d][%s]++[%s]++[%s]++\n", NF, $1, $2, $3) ; }'

  22. ## 处理 ++ 分隔符,处理正确
  23. echo  "字段1++字段2++字段3++字段4" | awk 'BEGIN {FS="\\++" } { printf("++-->[%d][%s]++[%s]++[%s]++\n", NF, $1, $2, $3) ; }'

  24. ## 处理 ~~ 分隔符,处理正确
  25. echo  "字段1~~字段2~~字段3~~字段4" | awk 'BEGIN {FS="~~" } { printf("~~-->[%d][%s]++[%s]++[%s]++\n", NF, $1, $2, $3) ; }'


  26. ## 处理 -- 分隔符,处理正确
  27. echo  "字段1--字段2--字段3--字段4" | awk 'BEGIN {FS="--" } { printf("---->[%d][%s]++[%s]++[%s]++\n", NF, $1, $2, $3) ; }'


  28. ## 处理 !!! 分隔符,处理正确
  29. echo  "字段1!!!字段2!!!字段3!!!字段4" | awk -F "!!!" '{ printf("!!!-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'


  30. ## 处理 ^ 分隔符,处理正确
  31. echo  "字段1^字段2^字段3^字段4" | awk -F "^" '{ printf("^-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'

  32. ## 处理 ^^ 分隔符,处理正确
  33. echo  "字段1^^字段2^^字段3^^字段4" | awk 'BEGIN {FS="\\^\\^"} { printf("1111^^-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'


  34. ## 处理 ^! 分隔符,处理正确
  35. echo  "字段1^!字段2^!字段3^!字段4" | awk 'BEGIN {FS="\\^!"} { printf("2222^!-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'


  36. ## 处理 !^ 分隔符,处理正确
  37. echo  "字段1!^字段2!^字段3!^字段4" | awk 'BEGIN {FS="!\\^"} { printf("!^-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'


  38. ## 处理 :^ 分隔符,处理正确
  39. echo  "字段1:^字段2:^字段3:^字段4" | awk -F ":^" '{ printf(":^-->[%s]++[%s]++[%s]++\n", $1, $2, $3) ; }'
复制代码
  1. ## 如果使用于 unix 的 ksh 环境,部分转意处理方法不同

  2. echo  "abc1^^abc2^^abc3" | awk 'BEGIN{FS="\^^"}{printf("^^-->[%d] [%s][%s]\n", NF, $1,$2}'

  3. ## ksh 下只需要对第一个特殊字符进行转意,并且只需要写一个反斜线即可。
复制代码


论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
2 [报告]
发表于 2016-12-31 13:44 |只看该作者
谢谢老师  学习了

论坛徽章:
22
2015年亚洲杯之科威特
日期:2015-04-18 15:27:07每日论坛发贴之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之广夏
日期:2016-03-28 16:20:51程序设计版块每日发帖之星
日期:2016-04-09 06:20:00CU十四周年纪念徽章
日期:2016-05-03 09:35:1415-16赛季CBA联赛之天津
日期:2016-11-18 08:31:3115-16赛季CBA联赛之山西
日期:2016-12-07 16:29:5315-16赛季CBA联赛之八一
日期:2017-01-10 11:34:3415-16赛季CBA联赛之吉林
日期:2017-03-30 22:51:1915-16赛季CBA联赛之广夏
日期:2017-04-13 20:51:52程序设计版块每日发帖之星
日期:2016-01-27 06:20:00每日论坛发贴之星
日期:2015-12-28 06:20:00
3 [报告]
发表于 2016-12-31 13:46 |只看该作者
  1. awk FS=\\x00
复制代码

顺便请教下老师这种怎么用

论坛徽章:
5
CU十四周年纪念徽章
日期:2016-06-30 00:03:1415-16赛季CBA联赛之天津
日期:2016-12-27 16:24:1415-16赛季CBA联赛之辽宁
日期:2017-03-14 15:38:3515-16赛季CBA联赛之江苏
日期:2017-03-14 17:09:4815-16赛季CBA联赛之青岛
日期:2017-04-04 16:15:48
4 [报告]
发表于 2016-12-31 15:15 |只看该作者
又学习了   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP