我有如下所示的文本文件:
1.
SometextSometextSometextSometext
2.
SometextSometextSometextSometext
3.
SometextSometextSometextSometext
4.
SometextSometextSometextSometext
我需要删除数字和它下面的文本之间的回车符,并且数字(。)和移动的文本之间需要有一个空格,如下所示:
现在我正在尝试:
$x = Get-Content *FILENAME*
$x | Foreach-Object {$_ | select-string "^\d{1,2}\.\s+" }
Run Code Online (Sandbox Code Playgroud)
(注意:我可以匹配选择字符串 "^\d{1,2}.\s+" 但之后不知道如何删除换行符或加入文件)
我正在努力的最终结果:
$x = Get-Content $filename -Raw
$x -replace '(\d{1,2}\.)\s*\r?\n(.+?)(\r?\n|$){2,}','$1 $2$3'
Run Code Online (Sandbox Code Playgroud)
Get-Content
使用-Raw
参数调用将文件作为单个字符串而不是单独的行返回。在这种情况下,由于您正在处理换行符,因此更容易将其全部视为一个字符串。.
,并将其捕获在第 1 组中。.
后面的组,你想要的行,以及单行结束(如果存在)。由于管道一次只能运行一行,因此最简单的方法可能是将数字保存在缓冲区中,并在到达下一行时输出它:
$x | Foreach-Object {if($_ -match "^\d{1,2}\.\s+"){$num = $_}else{$num+$_;$num="";} }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13700 次 |
最近记录: |