Я собираюсь предположить, что в bash допускает некоторые внешние двоичные вызовы.С учетом этого:
Все строки после последнего матча
tac infile | sed '/string match/,$d' | tac
Вывод
$ tac infile | sed '/string match/,$d' | tac
string log 5
string log 6
Все строки до последнего матча
tac infile | sed '1,/string match/d' | tac
Вывод
$ tac infile | sed '1,/string match/d' | tac
string log 1
string log 2
string match
string log 4