Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Kan ik twee greps samenvoegen tot een

1 view
Skip to first unread message

Cecil Westerhof

unread,
Nov 5, 2023, 8:59:06 AM11/5/23
to
Ik wil uit een log bestand die regels waarin staat 'not installed', of
'warning' met uitzondering van de regels waarin staat 'optional module
not installed'. Dat doe ik op het ogenblik met:
grep 'not installed\|warning' ${_log_file} | \
grep -v 'optional module not installed'

Maar dat vind ik eigenlijk niet super netjes. Kan ik die twee
samenvoegen tot één grep statement?

--
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof

Izak van Langevelde

unread,
Nov 5, 2023, 9:53:48 AM11/5/23
to
On 05-11-2023 14:49, Cecil Westerhof wrote:
> Ik wil uit een log bestand die regels waarin staat 'not installed', of
> 'warning' met uitzondering van de regels waarin staat 'optional module
> not installed'. Dat doe ik op het ogenblik met:
> grep 'not installed\|warning' ${_log_file} | \
> grep -v 'optional module not installed'
>
> Maar dat vind ik eigenlijk niet super netjes. Kan ik die twee
> samenvoegen tot één grep statement?

grep -Pe '^(?!.*optional module not installed).*(not installed|warning)'

--
Grinnikend door het leven...

Cecil Westerhof

unread,
Nov 5, 2023, 9:59:05 AM11/5/23
to
Cecil Westerhof <Ce...@decebal.nl> writes:

> Ik wil uit een log bestand die regels waarin staat 'not installed', of
> 'warning' met uitzondering van de regels waarin staat 'optional module
> not installed'. Dat doe ik op het ogenblik met:
> grep 'not installed\|warning' ${_log_file} | \
> grep -v 'optional module not installed'
>
> Maar dat vind ik eigenlijk niet super netjes. Kan ik die twee
> samenvoegen tot één grep statement?

Doe het nu maar met awk:
awk '/not installed|warning/ {
if ( ! index($0, "optional module not installed") ) {
print $0
}
}' "${_log_file}"

Izak van Langevelde

unread,
Nov 5, 2023, 10:10:20 AM11/5/23
to
On 05-11-2023 15:54, Cecil Westerhof wrote:
> Cecil Westerhof <Ce...@decebal.nl> writes:
>
>> Ik wil uit een log bestand die regels waarin staat 'not installed', of
>> 'warning' met uitzondering van de regels waarin staat 'optional module
>> not installed'. Dat doe ik op het ogenblik met:
>> grep 'not installed\|warning' ${_log_file} | \
>> grep -v 'optional module not installed'
>>
>> Maar dat vind ik eigenlijk niet super netjes. Kan ik die twee
>> samenvoegen tot één grep statement?
>
> Doe het nu maar met awk:
> awk '/not installed|warning/ {
> if ( ! index($0, "optional module not installed") ) {
> print $0
> }
> }' "${_log_file}"

Als het werkt, dan werkt het. Zelf zie ik dan liever awk '/not
installed|warning/ && !/optional module not installed/'

Cecil Westerhof

unread,
Nov 5, 2023, 11:44:04 AM11/5/23
to
Dit vind ik een nog betere oplossing dan je vorige. Voor mij en de
meeste andere mensen veel beter leesbaar.
(Kan ik PCRE even in de koelkast zetten.)
Merci.
0 new messages