回复 6# idwma
刚试了一下, 发现@开头的行后面的数字会影响序号
我把第5行后面的1删了, 加的序号是对的, 不删加的序号是错的- $s = @'
- hello 1 a 3 aa 1
- world 2 a 6 aa 3
-
- @hello helo1
- hello
-
- @world world2
- world
- '@ -split '\r?\n'
- $a = "我是要加的文本"
-
- #$f = gc 1.txt
- $a = @{ }
- foreach ($l in ($f = $s))
- {
- if ($l -match '\d+')
- {
- $m = $matches[0]
- if ([int]$m -gt $i) { [int]$i = $m }
- $a[[int]$m] = 1
- }
- elseif ($l -match '^@')
- {
- 1 .. $i | %{ if (!$a[$_]) { $i = $_; break } }
- if ($a.count -eq $i) { $i++ }
- break
- }
- }
- $f -join "`r`n" -replace '(?s)(?<=^[^@]+?)\s+(?=@)', "`r`n我是要加的文本$i`r`n`r`n"
复制代码
|