Это удалит блоки, начинающиеся с TEST CASE2,
, заканчивающиеся *
и содержащие unque759
cat file.txt
*
TEST CASE1,
$ some text unque633
PLACEMENT 123
*
TEST CASE2,
$ some text unque759
PLACEMENT 321
*
TEST CASE2,
$ some text unque999
PLACEMENT 321
*
TEST CASE3,
$ some text unque966
PLACEMENT 856
*
perl -0777 -ape 's/TEST CASE2,[^*]+?\bunque759\b[^*]+?\*(?:\R|\z)//' file.txt
*
TEST CASE1,
$ some text unque633
PLACEMENT 123
*
TEST CASE2,
$ some text unque999
PLACEMENT 321
*
TEST CASE3,
$ some text unque966
PLACEMENT 856
*
Объяснение:
-0777 # “slurp” mode, read the file in a single string
s/ # substitute
TEST CASE2, # literally
[^*]+? # 1 or more non asterisk, not greedy
\b # word boundary
unque759 # literally
\b # word boundary
[^*]+? # 1 or more non asterisk, not greedy
\* # an asterisk
(?:\R|\z) # non capture group, end of line OR end of string
// with nothing