join lines after colon (perl)

后端 未结 3 743
忘了有多久
忘了有多久 2021-01-27 23:21

I have this lines:

alpha: beta
beta: alpha, beta
omega: beta, gamma, alpha
gamma: 
alpha
beta
gamma
epsilon: alpha

I want to join line contains

3条回答
  •  时光说笑
    2021-01-28 00:18

    This also works if the input is provided in a file as an argument to the script, and is a little shorter:

    $/=$.;$_=<>;s/\s?\n/, /g;s/, (\w+:),?/\n$1/g;s/, $/\n/;print
    

    It's not very readable, but it works with strict and warnings.

    Output:

    alpha: beta
    beta: alpha, beta
    omega: beta, gamma, alpha
    gamma: alpha, beta, gamma
    epsilon: alpha
    

    It can probably be shortened even further. -ape or #!perl -ap would be a good start.

提交回复
热议问题