2014-09-18 3 views
2

Давайте начнем с этого:EOL с Perl -p -e

echo "1 2 3 4 5 6" | perl -pe 's/ /\n/g' > unix.txt 
echo "1 2 3 4 5 6" | perl -pe 's/ /\r\n/g' > dos.txt 
echo "1 2 3 4 5 6" | perl -pe 's/ /\r/g' > mac.txt 

Когда я открываю ДОС файл с Vim Я получаю раздражает ^M и ВИМ не распознает файл дос как формат дос даже с set ffs=unix,dos,mac.

Таким образом, я исследовал немного дальше:

$ hexdump -C unix.txt 
00000000 31 0a 32 0a 33 0a 34 0a 35 0a 36 0a    |1.2.3.4.5.6.| 

$ hexdump -C dos.txt 
00000000 31 0d 0a 32 0d 0a 33 0d 0a 34 0d 0a 35 0d 0a 36 |1..2..3..4..5..6| 
00000010 0a            |.| 

$ hexdump -C mac.txt 
00000000 31 0d 32 0d 33 0d 34 0d 35 0d 36 0a    |1.2.3.4.5.6.| 

Я заметил, что 0a появляется в конце каждого файла. Я не понимаю, почему. Как избавиться от него?

ответ

5
echo "1 2 3 4 5 6" | hexdump -C 
00000000 31 20 32 20 33 20 34 20 35 20 36 0a    |1 2 3 4 5 6.| 
--------------------------------------------^^ 

echo -n "1 2 3 4 5 6" | hexdump -C 
00000000 31 20 32 20 33 20 34 20 35 20 36     |1 2 3 4 5 6| 

От man echo

-n  do not output the trailing newline 
+0

Oh! Проблема исходит от эха не от Perl! Как глупо я ... – nowox

 Смежные вопросы

  • Нет связанных вопросов^_^