标题: [问题求助] PowerShell用替换法删除空行的问题 [打印本页]
作者: 5i365 时间: 2022-3-1 10:54 标题: PowerShell用替换法删除空行的问题
下面的第二行代码执行后成功将文本内部的空行删除,但第一行不生效? 请高手指教! 多谢!!
另外, 第二行代码处理后最结尾会有两行空行, 我用第三行的代码, 执行后还是有一个空行, 能修改下正则把最后的两行也顺便删除吗?
(gc A.txt ) -replace "\s+\r\n+" | Out-File "b.txt"
[IO.File]::ReadAllText("A.txt") -replace '\s+\r\n+' | Out-File "b.txt"
([IO.File]::ReadAllText("A.txt") -replace '\s+\r\n+').Trim() | Out-File "b.txt"
-------------------------------------------------------------------------------------------------------------
刚发现一个问题, 第二行代码能删除空行, 但是下面的文字替换后,#1跑到了第一行的最后,感觉正则可能还需要改一下
-----------------------------------------
长夜未央的陪在我的身边
#1
阿衣妞妞
嗯海马塔莎洛
让风吹**脸上的泪痕
逝去的爱
不必再留恋
作者: idwma 时间: 2022-3-1 18:59
gc返回的是数组
换行符都被替换没了,是不是要补一个回去
-replace '\s+\r\n',"`r`n"
作者: 5i365 时间: 2022-3-1 20:10
回复 2# idwma
大侠牛X, 【#1跑到了第一行的最后】 这个问题解决了, 但是还有个小问题, 原文本中最后一行没有空行, 但是执行后, 会多个空行, 好像输出的命令都有这个问题 加了 .Trim()也不行
作者: idwma 时间: 2022-3-2 11:58
本帖最后由 idwma 于 2022-3-2 12:11 编辑
- https://stackoverflow.com/questions/45266461/set-content-appends-a-newline-line-break-crlf-at-the-end-of-my-file
复制代码
找了一下感觉这个字节转换方法以后还可以用在别的地方- [Text.Encoding]::default.GetBytes($((gc a.txt) -join "`r`n" -replace '\s+\r\n',"`r`n")) | sc -enc byte b.txt
复制代码
作者: 5i365 时间: 2022-3-2 18:39
本帖最后由 5i365 于 2022-3-2 18:44 编辑
回复 4# idwma
感谢大侠支招, 这回真是完美了
另外还是有一点缺憾, a.txt的编码还是得用您以前写的那段ps识别一下, 感觉还是稍有点长 ,
went大侠的Coder, 能自动转任意编码的文本为UTF8, 且都不乱码, 然后我就能在PS脚本的最开头, 设置默认读和写的编码都为UTF8, 这样不会出任何乱码问题
用您刚才出的招, 能曲线实现吗? 我结根结底, 是想要UTF8 不带Bom的最终文本【用[IO.File]::WriteAllLines】, 但是源文本, 又是各种的编码格式
如果一两行代码, 手改一下没什么, 如果代码长了, 里面的读文本的地方都得加编码格式, 不然就乱码
作者: 5i365 时间: 2022-3-2 18:55
回复 4# idwma
好像又问题了, 下面这个文件, 是utf8带bom的, 直接用上面的代码输出报错, 但我看上面代码设为了byte格式, 那怎样最终得到UTF8的文本?
https://send.cm/d/99LA
作者: idwma 时间: 2022-3-2 22:02
还是用went神的那个判断函数好,比较通用
代码有多长?可以看一下吗
作者: 5i365 时间: 2022-3-3 16:41
回复 7# idwma
嗯, 看来还是要在执行gc前加个判断稳, 我是做假设, 以后打算拼几个代码,组装一下, 编码换来换去很烦人
作者: 5i365 时间: 2022-3-3 16:45
回复 7# idwma
怎样把went大侠的检测编码的ps代码,搞成一个函数, 然后在循环里使用它, 能写个例子吗? 比如把当前目录下的所有txt文件,转成 UTF8不带bom格式的txt
作者: idwma 时间: 2022-3-3 19:30
原贴里不是有例子了吗
作者: 5i365 时间: 2022-3-4 14:21
回复 10# idwma
在处理循环时, 遇到点问题, 稍后贴上代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |