Добавить недостающие символы новой строки в несколько файлов - PullRequest
17 голосов
/ 07 мая 2011

У меня есть несколько неполных файлов: в последней строке отсутствует символ EOL .

Какой самый простой способ добавить новую строку, используя любой инструмент (возможно, awk?)?

Ответы [ 3 ]

28 голосов
/ 07 мая 2011

Чтобы добавить новую строку в конце файла:

echo >>file

Чтобы добавить строку в конце каждого файла в текущем каталоге:

for x in *; do echo >>"$x"; done

Если вы неНе знаю заранее, заканчивается ли каждый файл новой строкой, сначала проверьте последний символ.tail -c 1 печатает последний символ файла.Поскольку подстановка команд усекает любой заключительный символ новой строки, $(tail -c 1 <file) является пустым, если файл пуст или заканчивается новой строкой, и непустым, если файл заканчивается не символом новой строки.

for x in *; do if [ -n "$(tail -c 1 <"$x")" ]; then echo >>"$x"; fi; done
5 голосов
/ 07 мая 2011

Vim отлично подходит для этого, потому что если вы не откроете файл в режиме binary, он автоматически завершит файл с обнаруженным окончанием строки.

Итак:

vim file -c 'wq'

должно работать независимо от того, имеют ли ваши файлы стиль конца строки в Unix, Windows или Mac.

1 голос
/ 07 мая 2011
echo >> filename

Попробуйте перед массовым использованием:)

...