在PowerShell中逐行/逐字段(管道分隔)读取文件

时间:2017-07-21 13:45:36

标签: shell powershell

在PowerShell中实际上是初学者。我想将shell脚本转换为powershell。

我有 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 个文件,其中包含3行。我想在不同的变量中选择每个单词,以及在next if条件下需要使用哪些变量。

sample.txt

我已经有了shell脚本:

get-content sample.txt 
wordone|secondword|thridword|fourthword
wordone1|secondword1|thridword1|fourthword1
wordone2|secondword2|thridword2|fourthword2

请帮我解释如何将shell转换为powershell。

2 个答案:

答案 0 :(得分:0)

这是你在找什么?

$textfile = get-content "sample.txt"
$sample = "sample.txt"


for ($i=0;$i -lt $textfile.count;$i++){
    $textrow = ($textfile[$i]).split("|")

    $dir = $textrow[0]
    $metadata_name = $textrow[1]
    $metadata_file = $textrow[2]
    $config_file = $textrow[3]

   If($config_file -ne ""){
        New-Item $dir/ConfigurationPlan -type directory -force
        $sample | Out-File "$dir/ConfigurationPlan/$($config_file)_sample.xml"
   }

}

答案 1 :(得分:0)

我会将您的set文件视为csv文件,并将Import-Csv与devtools::install_github("thomasp85/ggraph#78") .\sample.txt参数一起使用。
然后迭代行检查-Delimiter '|'并存在要复制的文件。

-Header dir,metadata_name,metadata_file,config_file

示例输出:

dir

如果输出看起来没问题,请删除Copy-Item

$Sample = Import-Csv sample.txt -delimiter '|' -Header dir,metadata_name,metadata_file,config_file $Sample "----" ForEach ($Line in $Sample){ if ($Line.config_file -ne ""){ $File = "$($line.dir).xml" "config_file is $($Line.config_file) checking $File" if (Test-Path $File){ Copy-ITem -Path $File -Destination "folder1\" -whatif } } } 参数