LINUX.ORG.RU
Ответ на: комментарий от mr

>А откуда он там?

Вам лучше знать :)

>И почему я не вижу его в vim?

посмотрите в mcview в режиме Hex.

А если вы изначально создаете файл в Vim, то видимо он этот newline и вставляет.

Vinick ★★
()
Ответ на: комментарий от Vinick

Спасибо, действительно это так, оказывается, некоторые редакторы вставляют newline (и vim в том числе).

Значит, надо как-то удалить символ переноса строки из конца файла...

mr ★★
() автор топика
Ответ на: комментарий от mr

если это надо сделать разово, то можете воспользоваться тем же vim, 
или mcedit. 
Если постоянно... мне в голову приходит только два варианта:
или
$ cat file | tr -d \\n > newfile
но это удалит вобще все вхождения \n

если надо удалить имено последний байт,то стоит смотреть в 
сторону head -c

можно наверно, что-то с sed или awk замутить, но как не знаю.



Vinick ★★
()
Ответ на: комментарий от Vinick

Да, к счачтью, это нужно сделать буквально для 2 файлов, и mcedit с этим отлично справляется (в vim сложнее, наверно, надо опцию eol использовать).

Простите, что протупил. И ещё раз спасибо за помощь.

mr ★★
() автор топика
Ответ на: комментарий от sdio

Тоже вариант, спасибо.

mr ★★
() автор топика
Ответ на: комментарий от sdio

Тоже вариант, спасибо.

mr ★★
() автор топика
Ответ на: комментарий от anonymous

2 anonymous (*) (22.03.2006 13:57:20) :

> > А откуда он там? И почему я не вижу его в vim?

> по стандарту.

Позвольте поинтересоваться, какой же именно
стандарт предписывает дописывать new line
в конец файла?
Или просто так, неподумавши брякнул?

Onanim
()
Ответ на: комментарий от mr

> Спасибо, действительно это так, оказывается, некоторые редакторы
> вставляют newline (и vim в том числе).

Такое поведение можно менять, читай :help eol в vim.

murla
()
Ответ на: комментарий от Onanim

Ну вообще, считается, что текстовый файл должен состоять из строк, каждая из которых заканчивается символом новой строки, в том числе и последняя.

Teak ★★★★★
()
Ответ на: комментарий от Onanim

> Позвольте поинтересоваться, какой же именно стандарт предписывает дописывать new line в конец файла?

Если мне не изменяет склероз - стандарт на язык программирования C, например.

$ gcc -Wall hw.c hw.c:3:47: warning: no newline at end of file

anonymous
()
Ответ на: комментарий от anonymous

2 anonymous (*) (22.03.2006 21:04:32) :

> Если мне не изменяет склероз - стандарт на язык программирования C, например.

Хм... перечитал исходный вопрос... и все дискуссию тоже... нигде
не упомянуто, что файл - это исходник на C. Или на каком другом
языке. Между строк читаешь? :-)))

Да ладно, дискутировать в общем-то не о чем. Поведение vi, при котором
он дописывает new line скорее историческими причинами.
Как говорит известная в узких кругах книга "Learning the vi Editor":

--- cut---
Finally, there is one tricky detail. Traditional vi always writes the
file with a final newline appended. When editing a binary file, this
might add one character to the file and cause problems. nvi and vim
are compatible with vi by default, and add that newline. In vim you
can set the binary option, so this doesn't happen. elvis and vile
never append the extra newline.
--- cut---

HTH

Onanim
()
Ответ на: комментарий от Onanim

> Хм... перечитал исходный вопрос... и все дискуссию тоже... нигде не упомянуто, что файл - это исходник на C. Или на каком другом языке. Между строк читаешь? :-)))

_Ваш_ вопрос выглядел так:

> Позвольте поинтересоваться, какой же именно стандарт предписывает дописывать new line в конец файла?

Я на него ответил. Вы же не будете отрицать, что исходник на C - это текстовый файл? ;)

anonymous
()
Ответ на: комментарий от Onanim

А по поводу исторических причин можно добавить, что, наверное, 80% всех файлов, когда-либо редактировавшихся в vi и клонах - это исходники на C/C++/shell/Perl ;-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.