Добавить недостающие строки в несколько файлов
У меня есть куча файлов, которые являются неполными: в последней строке отсутствует 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 стиль конца строки.