Tente:
awk '/./{ printf "%s%s", $0, (/Added/?"\n":",") }' data
Usando seus dados de entrada de amostra:
$ awk '/./{printf "%s%s",$0,(/Added/?"\n":",")}' data
Peter Green,Space Monkey at Area 51,Joined,Added by SF 3 weeks ago
Will Rossiter,Joined,Added by SF 3 weeks ago
Dean Matthews,Guitarist at Blues,Joined,Added by SF 3 weeks ago
Hobbit Mak,Farnborough, United Kingdom,Joined,Added by SF 3 weeks ago
Keneth W Moorfield,THE STOREMAN,Joined,Added by SF 3 weeks ago
Mick Georgious,Software Engineer,Joined,Added by SF 3 weeks ago
Como funciona:
-
/./{...}
Isso executa os comandos em chaves apenas se a linha contiver um caractere. Em outras palavras, isso ignora linhas em branco.
-
printf "%s%s",$0,(/Added/?"\n":",")
Isso imprime a linha, denotada
$0
, seguida por uma vírgula ou uma nova linha, dependendo se a linha corresponde à regexAdded
.