Eu estava tentando muitas combinações diferentes sem sucesso, neste momento eu ficaria muito grato por sua ajuda.
Eu preciso substituir este fim de linha várias vezes (em torno de 300) e seria doloroso substituí-lo um por um:
:;XXXXXX (lenght may vary)
Consegui encontrá-lo com :;*$
, o que destaca exatamente o que preciso!
Mas não consigo substituí-lo, para que fique assim: :;XXXXXX;;;
*
- deve corresponder a qualquer coisa (e funciona)
$
- deve corresponder ao fim da linha (e funciona)
Eu tentei encapsular *
entre parênteses (*); [*]
... como :;(*);;;$
entre outras coisas, mas sem sucesso. É claro que a substituição é feita, mas da mesma forma que a entrada. Por exemplo ... em vez de :;XXXXXX;;;
, recebo :;*;;;
- e é o melhor que consegui tirar dela.
Este é o formato de expressão regular UltraEdit, mas este software também pode processar expressões regulares Unix e Perl.
Eu posso sugerir QUALQUER maneira de fazer isso, vou tentar (terminal, outro software, etc.).
EDITAR:
Estou tentando obter contatos do nokia antigo para o nokia mais novo (s30 + series). Houve apenas backup.nbu do qual eu tenho contatos .vcf. Eu os coloquei em um arquivo via cat *.vcf > combined.vcf
. Eu encontrei o Excel macro e PHP script que deveriam fazer todo o processo, mas eles didn'work - mas tudo isso não é tão relevante, eu acho. Depois disso, encontrei o formato Vcard que esse modelo específico pode processar. Agora estou tentando modificá-lo, para parecer o mesmo. Substituir linhas não foi problema, mas eu preciso editar as extremidades. ;:NAME
to ;:NAME;;;
sem modificar nomes ...
Eu tentei o que descrevi acima. Depois disso, tentei sugerir sed -ri "s/\:\;X+$/&\;\;\;/g"
.
Eu acho difícil que o DOS termine com as linhas pode ser o problema, então eu corri: sed -i 's/\r//g' combined.vcf
e então novamente o comando sid sugerido.
FROM: N;CHARSET=UTF-8;ENCODING=8BIT:ALFA
TO: N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:;ALFA;;;
EDIT2:
Então eu fui desde o começo ...
-
Combinei arquivos .vcf
-
Abriu-os no UltraEdit e salvou como LF (do CRLF) - tentou desta vez sem sed
e terminal
-
No find replace eu selecionei Perl Regex
-
Localizar (:;)(.*)
-
Substitua ;;;
Para referência: .*
- Corresponde zero ou mais de qualquer caractere (exceto nova linha) ...
FEITO!