Вы можете сделать следующее с помощью оператора switch:
switch -regex -file list1.txt {
'^192\.168\.1\.\d+$' { $ip = $_ }
'^\|(.*?:.*?)\\x0D' { "{0}:{1}" -f $ip,$matches[1] }
}
Это будет работать в тех случаях, когда несколько IP-адресов перечислены в списке под IP-адресом, а также при наличии нескольких блоков IP-адресов и учетных линий.
^192\.168\.1\.\d+$
соответствует строкам, которые содержат только IP 192.168.1.x
, где x
- любое число. ^\|(.*?:.*?)\\x0D
соответствует |non-colon chars:non-backslash chars\x0D
, начинающему строку. Совпадение non-colon chars:non-backslash chars
- это группа захвата 1
, которая в коде обозначается как $matches[1]
.