Каков фактический тип сети по умолчанию в gnome-box, использующий сеанс qemu: ///?

Правильно завершенный текстовый файл с пустой последней строкой заканчивается двумя \ n .

Затем мы ожидаем, что tail -c2 должен быть равен $ '\ n \ n' .

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

f=filename
nl='
'
t=$(tail -c2 $f; printf x)  # capture the last two characters.
r="${nl}${nl}$"                 # regex for: "ends in two newlines".
[[ ${t%x} =~ $r ]] &&  echo "file $f ends in an empty line"

Мы могли бы даже немного расширить, чтобы проверить, какие файлы не имеют завершающей новой строки:

nl='
'
nl=$'\n'
find . -type f -name '*.styl' | while read f; do
    t=$(tail -c2 $f; printf x); r1="${nl}$"; r2="${nl}${r1}"
    [[ ${t%x} =~ $r1 ]] || echo "file $f is missing a trailing newline"
    [[ ${t%x} =~ $r2 ]] && echo "$f"
done

Обратите внимание, что при необходимости новую строку можно изменить на что-то вроде $ '\ r \ n .
В этом случае также измените tail -c2 на tail -c4 .

2
09.09.2017, 20:16
0 ответов

Теги

Похожие вопросы