使用powershell在csv文件的列中替换值<0和> 50

问题描述

极端的新手。

我有一个csv文件,该文件在称为QOH的列中显示库存可用性。我正在尝试编写一个powershell脚本,以将QOH列中的所有负值都更改为0,并且还将50或更大的任何值更改为= 50。 例如:如果QOH = -3,则替换为0。如果QOH = 39,则什么都不做,如果QOH = 78,则替换为50。

任何代码帮助都很棒

对于此示例,我们将说csv文件位于C:\ TEMP 列标题为: SKU,QOH,AVAIL,RRP,BC_id,Group,UPC

这是尝试将 50的东西)

这不起作用,因为QOH列中的所有内容现在都为0。

$Path = "C\TEMP\test.csv"
(Import-CSV -Path $Path) | select-object SKU,QOH,AVAIL,RRP,BC_id,Group,UPC | 
ForEach-Object {
    if ([float]$_.QOH -le 0) {
        $_.QOH = '0'
    } Else {
    $_.QOH = $_.QOH
    }
    $_
} | Export-CSV -Path $Path -NoTypeinformation

解决方法

不确定您是否找到答案了,所以我还是把它丢了。

我要指出的一件事是,您不需要将0设置为0或将$ .QOH设置为$ .QOH。基本上,只有小于0或大于50的那些才被更改-其余的都保持不变。

$text = @'
QOH,prop1,prop2
-3,data1,data2
-180,data3,data4
0,data5,data6
28,data7,data8
50,data9,data10
79,data11,data12
'@

$Text | convertfrom-csv | foreach {
    if([float]$_.QOH -lt 0){$_.QOH = 0}
    elseif([float]$_.QOH -gt 50){$_.QOH = 50}
    $_
}

我只是放入一些示例数据以使其清晰。这是输出

QOH prop1  prop2 
--- -----  ----- 
  0 data1  data2 
  0 data3  data4 
  0 data5  data6 
 28 data7  data8 
 50 data9  data10
 50 data11 data12

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...