[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [TEKNIK] Transmogriffe linux bash scripts til mac bash scripts



Frank Damgaard <sslug@sslug> writes:

> On 2012-02-14 22:18, Eskild Nielsen wrote:
>> JEg havde lavet en serie af bash scripts på min linux laptop, og ville prøve at køre dem
>> på en MAC
>> 
>> Succesen var mildest talt behersket, idet  sed virker temmelig anderledes
>
>
> Mac bruger hverken unix linieskift \n eller windows/Dos \r\n

OS X er en unix og bruger internt \n til at angive linje-skift i
tekstfiler. Det gælder dens evindelige XML-filer, tekstfiler skrevet med
TextEdit og kildetekst skrevet i XCode.

Men de grafiske programmer supporterer vist stadigvæk filer med den den
gamle MacOS konvention transperant for brugeren. Men det er ikke den
normale OSX konvention for linjeskift. 

>> Jeg skulle blandt andet indsætte et linieskift i en textfil, hver gang der var >< i filen
>> 
>> på linux: sed 's!><!>\n<!g' filnavn
>> 
>> men på mac bliver \n ikke opfattet som kontoltegn, men bliver taget for pålydende

Jeg er ikke sikker på hvad posix siger om sed-sproget, men jeg kan godt
reproducere dit problem. Ovenstående virker fint som perl-script, men
perl er heller ikke belastet af forskellige implementationer der tager
små forskellige valg.

Mit bedste bud på en kommando der virker som specificeret er:

$ sed $'s!><!>\\\n<!g' filename

Det virker under både Linux og OS X. Dollar-enkelt plinger er for at få
shellen til at fortolke escape sekvenserne. De to første backslashs
bliver så til en, som sed så ser og derfor gør "det rigtige".

//Makholm


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2012-03-01, 02:01 CET [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *