Использование GNU awk:
awk -v RS='[ \n]' '!/^[0-9]+$/{printf "%s%s",$0,RT}' file
(A678) John, Apples and Oranges
(E312) Mark, Oranges
(B21) Brooke, Bananas
Если запись (устанавливается с помощью RS
) не является числом !/^[0-9]+$/
, awk печатает ее.
Как выделено в комментариипо @kvantour, это работает, только если числа в скобках не пробелы.Если это так, вы можете использовать следующее:
awk -v RS="[()\n]" 'RT!=")"{gsub(/[0-9]+ ?/,"")}!/^[0-9]+$/{printf "%s%s",$0,RT}' file
Это решение, однако, не будет работать с вложенными или неправильно выровненными скобками.