标题: [问题求助] linux正则匹配行末尾和文件末尾时不一致 [打印本页]
作者: shootman2 时间: 2022-11-18 06:27 标题: linux正则匹配行末尾和文件末尾时不一致
数据
{001{AAA}ABC}
{002{BBB}ABC}
目的:将行首的{和行尾}的符号替换"(双引号)
当使用正则表达式 ^{ 可以匹配到所有以{开头的行,但是用 \}$ 就只能匹配到非最后一行的内容,文件末尾的}就总是无法替换,
请高手指教,谢谢
作者: hfxiang 时间: 2022-11-18 08:10
- {
- $0=gensub(/^\{(.+)\}$/,"\"\\1\"","g")
- print $0
- }
复制代码
作者: Batcher 时间: 2022-11-18 11:55
回复 1# shootman2
你在哪个命令里面使用的正则?sed? awk? vi?
作者: shootman2 时间: 2022-11-18 13:40
回复 3# Batcher
我用的是在UltraEdit工具里的支持unix语法的查找替换功能
作者: hfxiang 时间: 2022-11-18 14:08
回复 4# shootman2
gawk
作者: shootman2 时间: 2022-11-18 14:12
回复 5# hfxiang
在UltraEdit工具里支持unix语法的查找替换该怎么写表达式啊
作者: hfxiang 时间: 2022-11-18 14:20
回复 6# shootman2
抱歉,俺从没用过UltraEdit
作者: hfxiang 时间: 2022-11-18 14:23
回复 6# shootman2
试了一下,如下正则表达式可在Notepad++正常替换复制代码
作者: shootman2 时间: 2022-11-18 22:23
回复 8# hfxiang
您说的这个表达式还是没有解决问题,当最后一行是个空行时,可行,没有问题,但是如果最后一行不是一个空行的时候,
就始终无法替换最后一个字符,不知道是为啥
作者: terse 时间: 2022-11-19 00:12
回车符的问题吧 可以匹配到 "\r" 或"\n" 吗
作者: hfxiang 时间: 2022-11-19 17:02
回复 9# shootman2
这个估计你要去查阅UltraEdit对正则表达式的支持规则
作者: shootman2 时间: 2022-11-20 15:51
回复 10# terse
是不是最后一行只有回车,没有换行,从而导致的正则无法匹配呢?
作者: idwma 时间: 2022-11-20 20:07
这软件可选正则库的吧
选另一个试试
作者: terse 时间: 2022-11-21 18:17
匹配前 运行下面代码试一下可以成功不- (for /f %%i in ('findstr /v $ a.txt') do echo.)>>a.txt
复制代码
回复 12# shootman2
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |