Ваш первый пример sed
не работает для второго и последующих блоков, потому что/!/q
(обратная косая черта может привести к неопределенному поведению, поэтому я опускаю его )уже выполняется для первого !
и скрипт останавливается там (то же самое для exit
скрипта awk
). Поэтому выполняйте его только после блока, используйте
sed -n '/2\/1\/6.2062/,/!/{p;/!/q;}'
Но простой
sed -n '/2\/1\/6.2062/,/!/p'
как и во второй попытке, также будет работать, если у вас нет проблем с потерей некоторых циклов процессора.
А для будущих скриптов я предлагаю использовать другой разделитель шаблона адреса, если он содержит косые черты типа
sed -n '\_2/1/6.2062_,/!/p'
Легче читать, да?
И да, вы также можете использовать!d
:
sed '\_2/1/6.2062_,/!/!d'