免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2234 | 回复: 8

[文本处理] sed匹配中文标点符号到行尾并替换老是不行 [复制链接]

论坛徽章:
0
发表于 2019-05-20 10:54 |显示全部楼层
文件内容:
  `ACCOUNT_NO` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号',
  `ACCOUNT_NAME` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '账户名',
  `ACCOUNT_TYPE` tinyint(1) NULL DEFAULT NULL COMMENT '账户类型:1-个人 2-企业',
  `ACCOUNT_CAT` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '账户种类:11-余额户 21-基本户 22-待结算户 23-货款户',
  `ACCOUNT_STATUS` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '账户状态:01-正常 02-冻结 03-注销 04-只入 05-只出',
  `BALANCE` decimal(16, 2) NULL DEFAULT 0.00 COMMENT '余额',
  `AVL_BALANCE` decimal(16, 2) NULL DEFAULT 0.00 COMMENT '可用余额',
  `FREEZE_BALANCE` decimal(16, 2) NULL DEFAULT 0.00 COMMENT '冻结余额',
  `SIGNTURE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '防篡改签名',


我想把
COMMENT '账户种类:11-余额户 21-基本户 22-待结算户 23-货款户',
变成:
COMMENT '账户种类:',

匹配标准是   : 后有字的全部去掉 但要以:',结尾

感觉  账户状态:01-正常 02-冻结 03-注销 04-只入 05-只出
之间的中文字符很难匹配到,,

论坛徽章:
0
发表于 2019-05-20 13:37 |显示全部楼层
  1. #建议保存编码为:bom头 + utf8

  2. $test001 =
  3. @{
  4.         输入文件全路径     = 'a:\pscode\TEMP_2019\temp163\aaa.txt'
  5.         输出文件全路径     = ''

  6.         找什么         =
  7. @'
  8. COMMENT '账户种类:11-余额户 21-基本户 22-待结算户 23-货款户',
  9. '@


  10.         替换成啥         =
  11. @'
  12. COMMENT '账户种类:',
  13. '@

  14.         不用替换成啥_而用ps代码替换 = $false
  15.         查找模式        = '全文字符串'
  16.         找不到则在文件末尾追加 = $false
  17.         查找返回的结果必须唯一 = $true
  18.         返回结果不唯一时    = '全部替换'
  19.         脚本pid       = $pid # 这行用于脚本防错,不要修改。
  20. }

  21. & a:\pscode\TEMP_2019\temp151\ps找算替v3.10.ps1  @test001

  22. #注意: 这里不能用 /usr/bin/pwsh -f /powershell/ps找算替v3.10.ps1  @test001
  23. #注意: 这里不能用 powershell.exe -f d:\ps找算替v3.10.ps1  @test001

  24. #function global:计算代码
  25. #{
  26. #        $a = 'z' + $global:匹配头尾查找模式_找到的字符串 + 'z'
  27. #        return $a
  28. #}
复制代码



脚本下载地址:
https://pan.baidu.com/s/1yuqUOhY9lEw65vJ-vceg4w

http://bbs.chinaunix.net/thread-4298068-1-1.html  ps找算替.ps1 脚本发布贴

论坛徽章:
0
发表于 2019-05-20 13:43 |显示全部楼层
1上面的脚本,我在win中测试通过,支持linux
2楼主可以不用。
3若楼主愿意使用,我的脚本到底灵不灵,欢迎反馈。
4若楼主不用,我也要把你这个问题,作为我写的脚本工具的例子,来演示。

论坛徽章:
0
发表于 2019-05-20 14:48 |显示全部楼层
回复 3# 本友会机友会摄友会

看不懂,要怎么用?

论坛徽章:
0
发表于 2019-05-20 14:50 |显示全部楼层
回复 1# txnet

  1. sed -r "s/(.+COMMENT '[^a-zA-Z0-9\s]+:).+(',)/\1\2/" file
复制代码

论坛徽章:
0
发表于 2019-05-20 14:56 |显示全部楼层
回复 5# jzsjm1002

我都看哭了,,,谢谢大神,,一招解决!!!!!!! 谢谢大神!

论坛徽章:
0
发表于 2019-05-20 15:06 |显示全部楼层
回复 5# jzsjm1002

[^a-zA-Z0-9\s]

这里边的\s 指什么?

论坛徽章:
0
发表于 2019-05-20 15:30 |显示全部楼层
回复 7# txnet

空格 制表符 等等

论坛徽章:
0
发表于 2019-05-21 12:24 |显示全部楼层
1 安装powershell,怎么安装,在网盘中有 html版手册,上有说明。
2 /usr/bin/pwsh -f /tmp/2楼脚本.ps1

我写这个脚本就是为了,不用sed,或者不用sed正则。替换傻瓜化。
替换傻瓜化,就是说不用求问,自己就能写替换脚本。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP