найти длину файла фиксированной ширины с небольшим поворотом - PullRequest
0 голосов
/ 21 ноября 2018

Привет, Чудные люди / Мои Гуру и все добрые люди.

У меня есть файл фиксированной ширины, и в настоящее время я пытаюсь найти длину тех строк, которые содержат х байтов.Я пробовал пару команд awk, но это не дает мне желаемого результата.Моя фиксированная ширина содержит 208 байт, но есть несколько строк, которые не содержат 208 байт.Я пытаюсь обнаружить те записи, которые не имеют 208 байт.

этот cmd дал мне длину файла

awk '{print length;exit}' file.text

здесь я попытался напечатать строки, содержащие 101 байт, но этоне работал.

awk '{print length==101}' file.text

Любая помощь / понимание здесь было бы очень полезно

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

С awk:

awk 'length() < 208' file

Ну, length () дает вам количество символов , а не байтов .Это число может отличаться в контексте Юникода.Вы можете использовать переменную окружения LANG, чтобы заставить awk использовать bytes :

LANG=C awk 'length() < 208' file
0 голосов
/ 21 ноября 2018

Perl для спасения!

perl -lne 'print "$.:", length if length != 208' -- file.text
  • -n читает строку ввода строкой
  • -l удаляет символы новой строки из ввода перед обработкой и добавляет их вprint

В одной строке будет напечатан номер строки ($.) И длина строки для каждой строки, длина которой отличается от 208.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...