2012-12-29 8 views
5

In primo luogo, vorrei dire che ho letto this post tuttavia ho ancora problemi per il CR line terminators.rimuovere i terminatori di linea CR

C'è un file chiamato build_test.sh, ho curato in leafpad e può essere visualizzato nel Vim:

cp ~/moonbox/llvm-2.9/lib/Transforms/MY_TOOL/$1 test.cpp 
cd ~/moonbox/llvm-obj/tools/TEST_TOOL/ 
make 
make install 
cd - 

Tuttavia:

  1. Utilizzando cat build_test.sh emette nulla.
  2. Uso more build_test.sh emette: cd - install/llvm-obj/tools/TEST_TOOL/Y_TOOL/$1 test.cpp
  3. Uso less build_test.sh emette: cp ~/moonbox/llvm-2.9/lib/Transforms/MY_TOOL/$1 test.cpp^Mcd ~/moonbox/llvm-obj/tools/TEST_TOOL/^Mmake^Mmake install^Mcd -

Il risultato di file build_test.sh è:

build_test.sh: ASCII text, with CR line terminators 

seguito this post, il ^M non esiste tuttavia non c'è più è interruzione di riga :-(
Il risultato di file build_test_no_cr.sh è n OW:

build_test_nocr.sh: ASCII text, with no line terminators 

La soluzione può essere visto here.

Tuttavia, mi piacerebbe comunque il motivo per cui cat non visualizza nulla e more visualizza un risultato così strano. Inoltre, perché dos2unix e set fileformat=unix in Vim fallisce per questo caso.

PS: Credo che forse il mio editore (Vim o leafpad?) Genera solo \r piuttosto \n per il ritorno a capo. Come può essere così?

risposta

10

Semplice \r terminatori per newline sono terminatori di riga "vecchio Mac", è strano che un editor nel 2012+ generi anche file con tali terminatori di linea ... In ogni caso, è possibile utilizzare il comando mac2unix, che fa parte del dos2unix distribuzione:

# Edits thefile inline 
mac2unix thefile 
# Takes origfile as an input, outputs to dstfile 
mac2unix -n origfile dstfile 

Questo comando non munge i file che sono già attesi terminatori di linea, che è un vantaggio. E anche il retro (unix2mac).

Si noti che mac2unix corrisponde a dos2unix -c mac.

+0

Purtroppo , Ho provato senza alcun effetto ;-( –

+0

Questo è il più bizzarro, questo comando ha sempre funzionato per me. Mi interessa sapere come si tenta di usarlo? – fge

+0

Il 'build_test.sh' viene modificato in primo luogo usando' leafpad' (non per m Windows o DOS OS). Uso solo 'dos2unix build_test.sh build_test_nocr.sh' e' file build_test_nocr.sh' mi dice che 'build_test_nocr.sh: testo ASCII, con terminatori di riga CR' –

6

Inoltre, se si lavora con vim, è possibile applicare fine riga UNIX eseguendo

:set fileformat=unix 
:w 

o semplicemente aggiungere

set fileformat=unix 

al vostro.vimrc File

+1

Non ha alcun effetto :-( –

4

ho finalmente capito che avrei potuto utilizzare questo comando:

tr '^M' '\n' <build_test.sh >build_test_nocr.sh 

dove ^M viene aggiunto premendo Ctrl+v e Enter keys.Alternately, questo ha lo stesso effetto:

tr '\r' '\n' <build_test.sh >build_test_nocr.sh 
Problemi correlati