Предположим, многострочный текстовый файл file
, некоторые строки которого начинаются с ключевого слова baz
.
$ cat file
foo bar
baz qux # line to be deleted
foo bar
foo bar baz
baz
baz qux quux
foo bar
Как отобразить все эти строки, не начинающиеся с ключевого слова, а такжеn
последние строки, начинающиеся с ключевого слова?
Если n = 2 , результат должен выглядеть следующим образом:
$ sought_command file
foo bar
foo bar
foo bar baz
baz
baz qux quux
foo bar
Я считаю, что awk может быть путь сюда.Что-то вроде:
counter=1
tac file | awk '{
if ($1 =="baz" && counter<=2)
{print $0; counter=$((counter+1));}
else if ($1 =="baz" && counter>2)
{next;}
else
{print $0;}
}' | tac
Что мне нужно изменить в приведенном выше коде, чтобы эта работа работала?