Discussion:
Kan ik twee greps samenvoegen tot een
(te oud om op te antwoorden)
Cecil Westerhof
2023-11-05 13:49:28 UTC
Permalink
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
2023-11-05 14:53:46 UTC
Permalink
Post by Cecil Westerhof
Ik wil uit een log bestand die regels waarin staat 'not installed', of
'warning' met uitzondering van de regels waarin staat 'optional module
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
2023-11-05 14:54:08 UTC
Permalink
Post by Cecil Westerhof
Ik wil uit een log bestand die regels waarin staat 'not installed', of
'warning' met uitzondering van de regels waarin staat 'optional module
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}"
--
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof
Izak van Langevelde
2023-11-05 15:10:18 UTC
Permalink
Post by Cecil Westerhof
Post by Cecil Westerhof
Ik wil uit een log bestand die regels waarin staat 'not installed', of
'warning' met uitzondering van de regels waarin staat 'optional module
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?
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/'
--
Grinnikend door het leven...
Cecil Westerhof
2023-11-05 16:43:15 UTC
Permalink
Post by Izak van Langevelde
Post by Cecil Westerhof
Post by Cecil Westerhof
Ik wil uit een log bestand die regels waarin staat 'not installed', of
'warning' met uitzondering van de regels waarin staat 'optional module
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?
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/'
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.
--
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof
Loading...