[FUG-BR] OT: script
Renato Botelho
rbgarga em gmail.com
Quinta Novembro 27 13:41:20 BRST 2014
> On Nov 27, 2014, at 13:29, Pedro Silva <pedro.flum at gmail.com> wrote:
>
>> Não é que não funciona, é que o que você está esperando é o comportamento
>> do gsed (gnu sed, tem no ports).
>>
>> No BSD Sed voce pode fazer:
>>
>> sed ’s/ /;/g’ file.txt
>> sed 's/[[:blank:]]/;/g’ file.txt
>>
>> Entendeu a primeira opção? É um TAB literal (pressione tab).
>>
>> Veja:
>> % cat teste.txt
>> uia isso
>> e isso
>>
>> % sed ’s/ /;/g' teste.txt
>> uia;isso
>> e;isso
>>
>> % sed 's/[[:blank:]]/;/g' teste.txt
>> uia;isso
>> e;isso
>>
>> No FreeBSD voce simplesmente da um tab. No OS X voce da Ctrl+V depois TAB
>> e vai imprimir o TAB literal. Mas pro que voce quer [[:blank:]] talvez
>> atenda como acima.
>>
>> Portanto nao é que n funciona, é apenas diferente. Como bash é diferente
>> do sh e vim é diferente do vi, gsed é diferente do sed, mas no Linux enfiam
>> tudo com o mesmo nome. Até o ls no Linux é outro (gnuls).
>>
>>
>>
>>
>>
> A segunda opção (sed 's/[[:blank:]]/;/g' teste.txt) funcionou
> perfeitamente; não pude testar a primeira (tab literal), pois no momento só
> tenho acesso ao meu FreeBSD por ssh. No BSD sed o "\tab" não representa o
> tab?
A primeira linha do seu arquivo vai ser danificada, ‘Position X’ vai virar ‘Position;X’ usando a opção com [[:blank:]].
Não, o sed BSD não vai entender o \t como TAB.
> Na segunda opção o "[[:blank:]]" representa tab ou null?
http://www.regular-expressions.info/posixbrackets.html
--
Renato Botelho
Mais detalhes sobre a lista de discussão freebsd