powershell - 如何仅在空行上拆分
问题描述
假设我有一个.txt
这样的文件:
abc:def ghi:jkl
xyz-www fff
grz,ggg,ewqe
dgokd fddfs
ssokpwe_klk
我想要将其读入 PowerShell,并按每个空行将其拆分为对象,因此最后我应该在这样的数组中包含三个对象:
# Object 1
abc:def ghi:jkl
xyz-www fff
#Object 2
grz,ggg,ewqe
dgokd fddfs
#Object3
ssokpwe_klk
我尝试了以下内容:
通过这三种方式读入文件:
Get-Content "D:\a.txt"
Get-Content "D:\a.txt" -Raw
Get-Content "D:\a.txt" | Out-String
并拆分以下方式:
.split("\n{2,}")
.split(([System.Environment]::NewLine + [System.Environment]::NewLine))
.split("\r\n\r\n")
但是,它总是不仅在空白的白线上分裂,而且在对象内部也分裂。
我怎么能真的只在空行上拆分,我需要如何阅读我的内容?
解决方案
您可以使用运算符执行以下-split
操作:
(Get-Content a.txt -Raw) -split '(?:\r?\n){2,}'
解释:
使用-Raw
switch 将文件作为一个字符串读取。(?:)
是一个非捕获组,以便在拆分时删除匹配的换行符。空行可能只是换行符(CR 匹配\r
和/或 LF 匹配\n
)。\r?
如果您的文件中没有 CR 字符,仍将匹配。{2,}
匹配两个或多个先前的匹配。
使用该.Split()
方法,您不能使用正则表达式语法,因为它不会解释它。Split(Params char[] separator)
重载不能识别连续的字符序列。它将每个输入字符串用作字符数组。然后它将为每个匹配的字符应用拆分。所以'hithereagain'.Split('there')
与 有相同的结果'hithereagain'.Split('eerth')
。
推荐阅读
- r - 如何将我的数据重新排序为 R 中的集群?
- python - Pandas - 将列标题添加到行值
- python - 跨 n 列抓取不同的行,但将所有列保留在数据框中
- python-3.x - 为什么我会得到“TypeError:'int' object is not iterable”
- kubernetes - 是否可以对 Pod 中的 VM 执行 ssh?
- elasticsearch - 检索 Copy_to/Stored 字段
- python - 为 Anaconda 安装 IsolationForest (Scikit-Learn)
- python - 从 .txt 文件存储到列表计划中
- sql - 如何根据列值查询重复行?
- java - 查找树中节点的深度