首页 > 解决方案 > 打印序列中缺少的数字

问题描述

我有一个名为的文件test.txt,其中有一个序列:

1
3
5
6
7

我想打印丢失的数字,我发现了一个完美的魔术代码

gc test.txt |% {$i = 1}{while ($i -lt $_){$i;$i++};$i++}

或这个:

gc test.txt | sort {[int]$_} |% {$i = 1}{while ($i -lt $_){$i;$i++};$i++}

但我想打印所有数字:

标签: regexpowershellsortingscriptingrange

解决方案


读取文件,从第一个数字开始,在最后一个数字结束,输出文件中没有的任何数字...

$TestFile = Get-Content Test.txt|Sort
[int]$TestFile[0]..[int]$TestFile[-1]|Where{$_ -notin $TestFile}

编辑:哎呀,你想要所有的数字。这将需要一个开关,一个更新的时刻。

$TestFile = Get-Content Test.txt|Sort
Switch([int]$TestFile[0]..[int]$TestFile[-1]){
    {$_ -notin $TestFile}{Write-Host "$_" -Fore Red;Continue}
   default {Write-Host "$_" -Fore Green}
}

推荐阅读