Вы можете использовать несколько функций редактора sed
для достижения своей цели.
sed -n '/^Sink/,/^$/p' pactl_Output.txt
-n
говорит: "не выполняйте стандартный вариант печати каждой строки вывода
/^Sink/,/^$/
- это регулярное выражение диапазона, которое говорит, что найдите строку, которая начинается с Sink, затем продолжайте смотреть на строки, пока не найдете пустую строку (/^$/
).
последний символ, p
говорит Печать того, что вы нашли.
Если в пустой строке есть пробелы или символы табуляции, используйте " ...,/^$[${spaceChar}${tabChar}]*\$/p"
. Обратите внимание на переход от одинарных кавычек к dbl-кавычкам, что позволит использовать переменные $ {spaceChar}$ {tabChar} должен быть расширен до их реальных значений. Вам может потребоваться экранировать закрывающий '$'. Вам нужно определить spaceChar и tabChar, прежде чем использовать их, например, spaceChar=" "
. Здесь, на SO, вы не сможетесм. tabChar, но не все sed поддерживают версию * 1017. * Вы можете выбрать нажатие клавиши Tab или использовать \t
. Я бы пошел с клавишей Tab, так как она более переносима.
Пока онаВероятно, можно выполнить ваш ходal с bash
, sed
был разработан для такого рода проблем.
Надеюсь, это поможет.