Uso di grep su file di testo in stile Mac

5

Quando eseguo grep su un file di testo, ottengo risultati senza senso. Sembra che l'intero file sia stampato ma su una riga che si sovrascrive da solo. Ho letto che su Mac, i file di testo usano \ r invece del normale \ n come una linea che termina. Questo spiegherebbe, ma come rendere grep treat \ r come se fosse \ n?

Sto usando Snow Leopard OS X e sono abbastanza nuovo nell'usare Apple, ma un programmatore Linux di vecchia data.

    
posta DarenW 29.06.2011 - 18:53
fonte

2 risposte

8

Non puoi modificare il comportamento di grep , ma puoi cambiare il file che vede:

tr '\r' '\n' <file | grep foo

Inoltre, le estensioni di riga \r sono legacy in questi giorni; OS X utilizza ufficialmente \n , sebbene ci siano ancora cose che non sono state aggiornate. In particolare, AppleScript non ha ancora capito nulla, il che mostra anche nell'utilizzo di percorsi file pre-OS X di default e che richiede POSIX file per indicare i percorsi nativi di OS X; inoltre, molte applicazioni Carbon utilizzano ancora \r , mentre Carbon è un framework di transizione da Mac OS 9 a OS X.

    
risposta data 29.06.2011 - 19:06
fonte
1

Un'utilità legacy comune per la gestione delle terminazioni di linea è capovolgi . Esegue la trasformazione sul posto per i file tra Unix, DOS / Windows, i formati di linea di legacy Mac e può anche campionare un file per farti sapere che tipo pensa che sia attualmente. Non viene fornito con OSX, ma puoi ottenere binari sia dal link che dal sorgente.

In questo caso, puoi prima flip -u yourFile.txt per assicurarti che utilizzi le nuove linee e non i linefeed per delimitare le linee e quindi utilizzare grep su di esso.

    
risposta data 29.06.2011 - 19:31
fonte

Leggi altre domande sui tag