$ awk 'function p() { if (hold != "") print hold } /^and/ { hold = hold OFS $0; next } { p(); hold = $0 } END { p() }' file
tomato
ham and eggs
BLT
peanut butter and jelly sandwich
При этом используется awk
для накопления строк в переменной с именем hold
всякий раз, когда обнаруживается строка, начинающаяся со строки and
. Если текущая строка не начинается с and
, печатаются накопленные строки (, если они есть ), и текущая строка используется для сброса hold
.