powershell - 拆分直到行尾powershell
问题描述
我正在尝试在 PowerShell 中执行一个脚本,该脚本在文本文件中的每 2 个字符后添加一个连字符,我已经完成了,但我面临一个问题。
代码 >
$file = get-content .\textfile.txt
($file -split "([a-z0-9]{2})" | ?{ $_.length -ne 0 }) -join "-" | Set-Content .\textfile.txt
如果我在.txt
文件中有如下值
000000000000
111111111111
输出来了就好。
00-00-00-00-00-00-11-11-11-11-11-11
我需要像这样的输出。
00-00-00-00-00-00
11-11-11-11-11-11
请建议我应该改变什么。
解决方案
Get-Content
删除所有换行符,并将字符串输出到管道,每行一个。
$file
是两个字符串的数组,@('000000000000', '111111111111')
. 当您-split
将它应用于两个字符串时,它变成了@('00', '00', '00', '00', '00', '00', '11', '11', '11', '11', '11', '11')
,现在您无法分辨行的开始或结束位置。
要修复它,您需要分别处理每一行:
(Get-Content .\textfile.txt) | ForEach-object {
($_ -split "([a-z0-9]{2})" |? { $_ }) -join "-"
} | Set-Content .\textfile.txt
或更改您正在执行的替换操作,这将在行内起作用,而不是将它们合并在一起:
(gc .\textfile.txt) -replace '([a-z0-9]{2})\B', '$1-' | sc textfile.txt
并\B
阻止它-
在行尾放置 a 。
推荐阅读
- xmpp - 在android中制作聊天应用程序的最佳服务器是什么?
- screeps - 是否有可能让小兵交换位置同时移动?
- iis-8 - 通过 Visual Studio 和 Plesk 使用 Web 部署
- javascript - 为 jQuery/javascript 中的顺序更新锁定变量
- sql - SQL Server - JSON 类型枚举
- tensorflow - Tensorflow 提供了哪些管理模型输入参数的机制?
- strongloop - 环回 REST API 路径
- mongodb - 如何在laravel的mongodb服务器中获取所有数据库名称
- visual-studio - VSTS - 与 TIA 构建的依赖映射不起作用
- git - 取消跟踪文件但不删除它