团队,
我在Windows中有一个文件,其内容如下所示:
460 ls
461 cd ..
462 ls
463 cd ubuntu /
464 ls
465 cd test /
466 ls
467 cd ..
468 openvpn
我想删除开头的所有数字并获取实际内容。
我试过了:
$var= Get-Content C:\Scripts\test.txt
$var.replace("/[4 6]/","");
$var.replace("/[4 6]/","");
($var.replace("4","")).Replace("6","")
但是有可能为此获得一些正则表达式解决方案。
答案 0 :(得分:5)
逐行处理文件时,您可以使用以下模式:
$var -replace '^[\s\d]+'
请参阅regex demo
将整个文件作为一个字符串处理时,您需要使用
$var -replace '(?m)^[\p{Zs}\t\d]+'
为了不跨行溢出。请参阅.NET regex demo。
<强>详情
^
- 输入的开始(在模式开始时使用(?m)
时,^
匹配输入的开始和每行的开始)[\s\d]+
- 一个或多个空格(\s
)或数字(\d
)[\p{Zs}\t]
- 匹配任何水平空格。答案 1 :(得分:1)
您可以使用以下正则表达式执行此操作。
$result = $var -replace '^[\s]?\d+'
要使用$result
更新文件,您可以使用以下代码。
Set-Content -Value $result -Path C:\Scripts\test.txt