Você pode usar:
sed -rn '/Username: S/,/^$/d;s/Username/echo &/p;/one: /N;s/Value one: (.+)\n/Hello -One: /;s/Value two: (.+)/ -Two --Thanks -for -visiting\n/p' file
Ou mais legível
sed -rn '{
/Username: S/,/^$/d
s/Username/echo &/p
/one: /N
s/Value one: (.+)\n/Hello -One: /
s/Value two: (.+)/ -Two --Thanks -for -visiting\n/p
}' file | tee newfile
Explicação
-
-r
usa expressões regulares estendidas para que não seja necessário escapar de()
ou+
-
-n
não imprime nada até que peça (é assim que nos livraremos da terceira linha) -
/Username: S/,/^$/d
findUsername: S
, leia de lá até uma linha vazia e exclua tudo isso -
s/thing/&/
findthing
e substitua por si mesmo -
/one: /N
findone:
e leia a próxima linha também para que possamos nos juntar a eles -
s/Value one: (.+)\n/
matchValue one:
e os caracteres que vierem depois da nova linha (\n
) que precisamos remover para unir as linhas e salvar os caracteres desconhecidos -
backreference para o padrão salvo com
()
-
p
imprima esta linha
(Eu aprendi um pouco do meu sed-fu (eu sou apenas um iniciante) aqui )