Вставить префикс в каждую строку файла, если строка не пустая, в противном случае выполнить другое действие

Привет всем! Прохожу курс “от 0 до Linux админа” и возникла проблема с обработкой файлов с помощью команды sed.

Вот мой вопрос: как я могу вставить префикс к каждой строке файла, если строка не пустая, а если строка пустая (включая пробелы и табуляции), то вставить другой префикс?

Вот что у меня есть на данный момент:

f1="f1.txt"

printf "line ONE\n \t \nline THREE  \t\n" > "$f1"

prefix_01="everything good.. "
prefix_02="NOT good !! "

cat "$f1" | sed -E 's/^/'"$prefix_01"'/'

Это выдает следующий результат:

everything good.. line ONE
everything good..
everything good.. line THREE

Я хочу получить следующий вывод, где в случае пустых строк будет использован prefix_02:

everything good.. line ONE
NOT good !! 
everything good.. line THREE

Нужно, чтобы sed проверял, пустая ли строка, и затем выполнял нужное действие. Я выделил два действия:

  • Если строка не пустая, добавляем prefix_01.
  • Если строка пустая, добавляем prefix_02.

Буду признателен за помощь!

Спасибо за ответ! У меня все получилось сделать как нужно. Префикс успешно добавляется к каждой непустой строке файла. Если строка пустая, выполняется другое действие. Ещё раз спасибо за помощь!