我有一个文本文件,有1000行。每一行都有用波浪号(~)分隔符分隔的元素。现在,我只想将第一列值数字更改为随机/唯一数字,即34324242342333。它的长度为15个字符。但这行不通。
34324242342333~22~BB74~001~
34656453535353~22~C23~001~
00900900900889~22~N99~001~
97002021207021~22~F22~001~
23423432423421~22~V99~001~
Powershell代码:
$FileContent = Get-Content -Path C:\TestFiles\DummyData1.txt
foreach ($Row in $FileContent) {
$RandomNumber= Get-Random -Minimum 111111111111111 -Maximum 999999999999999
$fields = $Row.Split("~")
$fields[0] = $RandomNumber
$fields -join '~'
} Set-Content | C:\TestFiles\DummyDataUpdated.txt
3条答案
按热度按时间ztyzrc3y1#
不幸的是,PowerShell不允许直接通过管道传输
foreach
语句的输出。要使现有代码使用最少的更改,请将foreach
语句 Package 在脚本块中:这里
& {…}
定义了一个脚本块,并使用调用操作符&
立即执行它。我还修复了
Set-Content
调用中的错别字(文件路径参数之前不应该有管道符号)。作为一种替代的简化解决方案,去掉临时变量
$fileContent
,使用单个管道来避免foreach
语句:变量
$row
已被自动变量$_
替换,该变量表示由流水线处理的当前元素。smdncfj32#
你可以试试这样的方法:
根据需要更改列名。
3pvhb19x3#
在任何数字上使用脚本块的替换,该数字除了数字之外没有任何东西: