UPDATE: este script awk
pode ser mais do que você está procurando:
awk -vRS='\r\n ' -vORS= 1 contacts.vcf
(postagem original)
Esse script perl
funciona, embora na verdade seja mais longo, mesmo quando sed
estiver um pouco espaçado; e é obviamente logicamente muito semelhante a sed
. Talvez o perl
leia o arquivo na memória mais rapidamente (?), Já que ele não tem o , ou não é a primeira linha? para lidar com ...
perl -e 'undef $/; $_=<>; s/\r\n //g; print' contacts.vcf
# | | | |
# ignore get substitute print
# newlines all as needed result
# | | | |
# sed -n '1h; 1!H; ${g; s/\r\n //g; p}' contacts.vcf
Por outro lado: não ser brincalhão, mas se você não puder ler um script sed facilmente e funcionar, deixe-o legível. Não consigo ler nenhum script sed assim! A síndrome do one-liner simplesmente não é adequada para scripts sed que vão além da simples substituição ... sed
é mais como uma linguagem de montagem de texto do que uma linguagem de script de alto nível ... perl
também é enigmática, mas tende fazer grandes coisas com sua sintaxe concisa.
sed -n '
1h # if 1st line, copy the pattern space to the hold space
1!H # if NOT 1st line, append the pattern to the hold space
${ # if this is the last line
g # overwrite current pattern with accumulated patterns from hold space
s/\r\n //g # make required substitutions
p # print the final result.
}' contacts.vcf