Нередко возникают ситуации, когда надо из большого количества текстовых файлов выбрать только нужную информацию, порой сделать это стандартными средствами проблематично.
В качестве примера возьмем такую ситуацию: есть некоторое количество файлов-детализаций начислений за услуги связи. Операторы связи эти детализации предоставляют, в том числе, в виде простого текстового файла формата csv (файл с разделителями). В какой-то момент времени возникает необходимость выбрать записи, где, в качестве инициатора или принимающей стороны выступает интересующий телефонный номер.
Если у Вас детализации загружаются в какую-то информационную систему, позволяющую делать интересующие выборки, то для Вас это не актуально. А если нет?
В этом случае на на помощь придет Powershell. Сейчас Powershell есть не только в Windows, но и в Linux.
Решить задачу можно, например, так:
Указываем путь до папки, где хранятся все детализации
$pt="D:\Detalizations\*.csv"
Собираем все файлы детализаций, в том числе и из вложенных папок
$f=Get-ChildItem $pt -Recurse
Выбираем все строки с нужным телефонным номером. Параметр -Encoding Default понадобится, если в детализации используются кириллические символы.
Select-String $f -Pattern "9001122333" -Encoding Default
Результат будет примерно такой:
D:\Detalizations\2018-06.CSV:7823:123456789;1;9003344555;28/06/2018;15:23:06;00:00:24;1,00;0,00;9001122333;9003344555;;Входящие;Входящий c моб.номера;Местные звонки;123456;0,00;
Это всего лишь мои мысли вслух.
Если Вам понравилась моя статья, не забудьте оценить её лайком и поделиться с друзьями в социальных сетях!
Если по содержимому данной статьи у Вас есть собственное мнение, поделитесь им в комментариях.