Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Оставить только нужные строки в текстовом файле (http://forum.oszone.net/showthread.php?t=351593)

Alexander_88 24-07-2022 05:20 2989083

Оставить только нужные строки в текстовом файле
 
Здравствуйте. есть два txt файла:

1.txt
Код:

0001 - *0333*;*0400*;*0475*;*0514*;*0575*;*0594*;*0699*;*0816*
0002 - *0088*;*0141*;*0804*;*1154*
0003 - *0352*;*0692*
0004 - *0056*;*0640*;*0740*;*0746*;*0809*;*1312*
0005 - *0004*;*0012*;*0025*;*0027*;*0047*;*0076*;*0472*;*0493*;*0677*;*0710*;*0749*;*0754*;*0855*;*1300*
0006 - *0965*;*1055*
0007 - *0176*;*0205*
0008 - *0606*;*0661*
0009 - *0155*;*0162*
0010 - *0088*;*0141*;*0804*;*1154*
0011 - *0001*;*0060*;*0175*;*0375*;*0410*;*0808*
0012 - *0080*;*0340*;*0364*;*0756*;*0813*;*1357*
0013 - *0021*;*0063*;*0070*;*0177*;*0180*;*0204*;*0283*;*0284*;*0288*;*0346*;*0485*;*0490*;*0491*;*0494*;*0502*;*0512*;*0543*;*0544*;*0560*;*0577*;*0583*;*0586*;*0599*;*0679*;*0689*;*1174*;*1343*
0014 - *0251*
0015 - *0554*;*0593*;*1178*
0016 - *0075*;*0311*;*0328*;*0336*;*0342*;*0379*;*0433*;*0436*;*0515*;*0518*;*0522*;*1314*
0017 - *0022*;*0072*;*0091*;*0110*;*0117*;*0119*;*0329*;*0334*;*0423*;*0437*;*0752*;*0753*;*1051*
0018 - *0080*;*0340*;*0364*;*0756*;*0813*;*1357*


2.txt
Код:

0002
0003
0004
0006
0007

Подскажите скрипт, который в первом txt оставит только те строки, которые начинаются на то, что написано во втором txt, а остальные строки удалит. Результат выведет в другой txt файл..

Если брать пример сверху, после применения скрипта результирующий текстовый файл должен быть такой:
Код:

0002 - *0088*;*0141*;*0804*;*1154*
0003 - *0352*;*0692*
0004 - *0056*;*0640*;*0740*;*0746*;*0809*;*1312*
0006 - *0965*;*1055*
0007 - *0176*;*0205*


YuS_2 24-07-2022 09:44 2989089

Цитата:

Цитата Alexander_88
результирующий текстовый файл должен быть такой »

powershell
Код:

$in1 = '1.txt'
$in2 = '2.txt'
$out = '3.txt'

$enc = 'utf8'

if ($psversiontable.psversion.major -gt 5){
        if ($enc -eq 'utf8'){$enc = 'utf-8'}
}

$a=gc -enc $enc $in1
$b=gc -enc $enc $in2

$res = foreach ($item1 in $a) {
        foreach($item2 in $b){
                if($item1 -match "^$item2"){$item1}
        }
}
$res|out-file -force -enc $enc $out


DJ Mogarych 24-07-2022 10:02 2989090

Powershell:
Код:

gc "C:\temp\2.txt" |% {(gc "C:\temp\1.txt") -match "^$_"} > "C:\temp\result.txt"

Alexander_88 24-07-2022 14:34 2989100

Спасибо, все четко работает :)


Время: 21:17.

Время: 21:17.
© OSzone.net 2001-