При использовании мьютекса только поток, заблокировавший мьютекс, может разблокировать этот мьютекс. Однако любой поток может увеличивать или уменьшать значение семафора.
Это можно сделать с помощью sed
. Общий формат:
sed -n '/pattern1/,/pattern2/p' file
-n
заставляет sed
не печатать, если это явно не указано с помощью p
. Эта команда напечатает все строки, находящиеся между строкой, соответствующей pattern1
, и одной, соответствующейpattern2
(включительно ). Если есть несколько совпадений, будет напечатано несколько строк.
В вашем случае вы хотите напечатать все до конца файла, поэтому pattern2
будет $
. Поэтому вы ищете это:
$ sed -n '/16-02-2020/,$p' file
16-02-2020
The top program provides a dynamic real-time view of a running
system. It can display system summary information as well as a list
of processes or threads currently being managed by the Linux kernel.
The types of system summary information shown and the types, order
and size of information displayed for processes are all user
configurable and that configuration can be made persistent across
restarts.
Не связанное с этим примечание: fgrep
и egrep
устарели, вы должны использовать grep -F
и grep -E
. См.man grep
:
In addition, the variant programs egrep and fgrep are the same as grep -E and grep -F, respectively. These variants are deprecated, but are provided for backward compatibility.
Для удаления блока из файла, я думаю, ed
, который обрабатывает файл как единое целое, а не действует построчно, как это делает sed
, является лучшим выбором:
$ ed -s input.txt
1,/^16-02-2020/-1d
wq
$ cat input.txt
16-02-2020
The top program provides a dynamic real-time view of a running
system. It can display system summary information as well as a list
of processes or threads currently being managed by the Linux kernel.
The types of system summary information shown and the types, order
and size of information displayed for processes are all user
configurable and that configuration can be made persistent across
restarts.
Удаляет все, начиная с первой строки до строки перед той, которая начинается с 16-02-2020
, и сохраняет измененный файл. При использовании в сценарии вы можете использовать heredoc для отправки команд наed
:
ed -s input.txt <<EOF
1,/^16-02-2020/-1d
w
EOF