Добавить недостающие строки в несколько файлов

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

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

3 ответов


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

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

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

Так:

vim file -c 'wq'

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


echo >> filename

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