Цифровые часы в Lubuntu 16.04 показывают на один час больше при CET ZT

Когда подсчет строк дает неожиданные результаты, мы должны проверить, понимает ли каждая утилита обработки текста, что такое строка, одинаково. Обычно это сводится к двум вопросам:

1) Проблемы преобразования файлов: какие символы используются в качестве EOL (конец строки, он же перевод строки или разрыв строки)? Это может быть \r, \n или \r\n в зависимости от ОС.

2) Самая последняя строка также завершается EOL? Если нет, то как с этим справляются утилиты обработки текста?

В данном случае второй вопрос вел к объяснению.

Что считает wc -l?

Непосредственно из справочной страницы:

-l, --lines вывести счетчик новой строки

Очевидно, что последняя строка не считается, если она не завершается символом новой строки, т.е. на одну меньше, чем реальное количество строк.

Что производит grep?

grep завершает каждую строку вывода символом новой строки. В документации не нашел, только проверял.


Теперь мы можем сделать тест, чтобы объяснить поведение, описанное в вопросе:

  1. Давайте создадим тестовый файл с 3 строками, но без завершающей новой строки

echo -ne "first\nsecond\n Third" > 3lines. txt

  1. Проверим последний символ:

tail -1 3lines.txt | od -c

Хорошо, нет '\n'.

  1. wc -l < ​​3lines.txt

Вывод: 2 (последняя строка не считается, так как отсутствует последняя новая строка)

  1. Пропустить все строки через grep

grep . < 3 строки.текст | wc -l

Вывод равен 3 (подсчитаны все строки, так как не пропущено ни одной новой строки)

  1. Отфильтровать только одну строку (это может быть любая строка)

grep -v first < 3lines.txt | wc -l

Вывод равен 2 (снова подсчитаны все строки).

1
24.01.2017, 20:35
1 ответ

Факт нахождения в сети государственного учреждения имел значение. Порт 123 (используемый по умолчанию для синхронизации) был закрыт, поэтому использование -u (который связывается с ntp-сервером через непривилегированный порт) было решением:

$sudo ntpdate -u pool.ntp.org
26 Jan 10:03:48 ntpdate[5080]: adjust time server 158.227.98.15 offset 0.005423 sec

и теперь на панели отображается правильное время.

0
28.01.2020, 01:03

Теги

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