Почему awk не показывает корректную рекордную длину?

Преобразованный комментарий от @ewhac в ответ:

Firefox не Только приложение для сохранения собственных настроек окна на выходе (например, Newsreader Pan делает это). Он выглядит ужасно, как есть состояние гонки между потрясающим настройкой окна, а приложение, восстановив свои сохраненные настройки.

Как таковое, вы можете заставить его сделать с помощью Tright Trigger , поскольку предыдущий комментатор отметил, или делает его вручную (отображение ключа по умолчанию для переключения окна максимизации в потрясающем состоянии - мод + м).

0
20.10.2014, 17:20
2 ответа

Это связано с тем, что сепаратор записи по умолчанию RS устанавливается на новую строку.

Следовательно, awk будет интерпретировать это в качестве сепаратора вместо символа в длину.

Для проверки того, что устанавливается RS для:

echo | awk '{print "\""RS"\""}'
"
"

Цитаты отделены новой линией, показывающей значение RS .

Чтобы подтвердить, что символ RS не включен в выходной режим:

$ echo test > some_file.txt
$ ls -l
-rw-r--r--. 1 user user    5 Oct 20 16:33 some_file.txt

показать длину с RS , установленным на новую строку.

$ awk '{print length}' some_file.txt
4

Установите RS Быть символом, который не существует в файле и сосреборочается снова:

$ awk 'BEGIN {RS=":"} {print length}' some_file.txt
5

Теперь включен дополнительный символ.

2
28.01.2020, 02:20

То, что вы видите, совершенно нормально. По умолчанию AWK не включает в себя символ Newline в записи.

Из стандарта стандарта POSIX для AWK :

вход должен интерпретировать как последовательность записей. По умолчанию запись - это линия, меньше ее завершения
...
Функции строки
Длина [([S])] - Вернуть длину, в символах, его аргумента, взятых в виде строки, или всей записи, $ 0, если нет аргументов.

2
28.01.2020, 02:20

Теги

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