Войти

Показать полную графическую версию : [решено] Оставить только нужные строки в текстовом файле


Alexander_88
24-07-2022, 05:20
Здравствуйте. есть два 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*;*0 502*;*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
результирующий текстовый файл должен быть такой »
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
Powershell:

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

Alexander_88
24-07-2022, 14:34
Спасибо, все четко работает :)




© OSzone.net 2001-2012