找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17486|回复: 13

[问题求助] linux正则匹配行末尾和文件末尾时不一致

[复制链接]
发表于 2022-11-18 06:27:03 | 显示全部楼层 |阅读模式
数据
{001{AAA}ABC}
{002{BBB}ABC}

目的:将行首的{和行尾}的符号替换"(双引号)

当使用正则表达式 ^{ 可以匹配到所有以{开头的行,但是用 \}$ 就只能匹配到非最后一行的内容,文件末尾的}就总是无法替换,

请高手指教,谢谢
发表于 2022-11-18 08:10:12 | 显示全部楼层

  1. {
  2.         $0=gensub(/^\{(.+)\}$/,""\\1"","g")
  3.         print $0
  4. }
复制代码
发表于 2022-11-18 11:55:47 | 显示全部楼层
回复 1# shootman2


    你在哪个命令里面使用的正则?sed? awk? vi?
 楼主| 发表于 2022-11-18 13:40:12 | 显示全部楼层
回复 3# Batcher


    我用的是在UltraEdit工具里的支持unix语法的查找替换功能
发表于 2022-11-18 14:08:07 | 显示全部楼层
回复 4# shootman2


    gawk
 楼主| 发表于 2022-11-18 14:12:07 | 显示全部楼层
回复 5# hfxiang


    在UltraEdit工具里支持unix语法的查找替换该怎么写表达式啊
发表于 2022-11-18 14:20:01 | 显示全部楼层
回复 6# shootman2


    抱歉,俺从没用过UltraEdit
发表于 2022-11-18 14:23:39 | 显示全部楼层
回复 6# shootman2


   
试了一下,如下正则表达式可在Notepad++正常替换

  1. ^\{(.+)\}$
  2. "\1"
复制代码
 楼主| 发表于 2022-11-18 22:23:03 | 显示全部楼层
回复 8# hfxiang


    您说的这个表达式还是没有解决问题,当最后一行是个空行时,可行,没有问题,但是如果最后一行不是一个空行的时候,
    就始终无法替换最后一个字符,不知道是为啥
发表于 2022-11-19 00:12:05 | 显示全部楼层
回车符的问题吧 可以匹配到 "\r" 或"\n" 吗
发表于 2022-11-19 17:02:55 | 显示全部楼层
回复 9# shootman2


   
这个估计你要去查阅UltraEdit对正则表达式的支持规则
 楼主| 发表于 2022-11-20 15:51:27 | 显示全部楼层
回复 10# terse


     是不是最后一行只有回车,没有换行,从而导致的正则无法匹配呢?
发表于 2022-11-20 20:07:16 | 显示全部楼层
这软件可选正则库的吧
选另一个试试
发表于 2022-11-21 18:17:23 | 显示全部楼层
匹配前 运行下面代码试一下可以成功不
  1. (for /f %%i in ('findstr /v $ a.txt') do echo.)>>a.txt
复制代码
回复 12# shootman2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:30 , Processed in 0.021198 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表