ocehb: (Default)
[personal profile] ocehb

Необходимо прочитать 30-Мб файл в переменную и сделать в переменной мультистрочный поиск...
хочу поймать такие строки:


!КОМАНДА
текст текст текст текст текст текст текст текст текст текст текст текст


Т.е. если строка начинается на "!", то нужно печатать все до тех пор, пока не будет полностью пустая строка (^\s*$).


мое решение:


perl -0000 -lne 'm#^(!.+)#sm && print $1'


т.е. читаем по-параграфно, находим ^! и выбираем от него и до конца.

ps. есть возможность споткнуться о "пустую строку", где буд(е|у)т пробел(ы).

pps.

# ll -h /var/log/messages-20110213 
-rw-------. 1 root root 190M Feb 13 03:12 /var/log/messages-20110213
# perl -lne 'print; print "\n" if (int(rand 100)%5 == 0); ' /var/log/messages-20110213 >| /tmp/test
# ll -h /tmp/test
-rw-r--r--. 1 ocehb wheel 190M Feb 28 16:15 /tmp/test
# time perl -0000 -lne 'm#^(!.+)#sm && print $1' /tmp/test
Real: 1.14s User: 0.18s System: 0.91s Percent: 95%% Cmd: perl -0000 -lne 'm#^(!.+)#sm && print $1' /tmp/test
#


Profile

ocehb: (Default)
ocehb

January 2021

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 6th, 2026 04:46 pm
Powered by Dreamwidth Studios