Я нашел вопрос о том, как удалить строки длиннее 2048 символов:
Как удалить строку, если она длиннее XY?
Q: Но как я могу удалить строки короче 4 символов? Так что удалите строки, которые имеют 1 или 2 или 3 длины в файле.
ОБНОВЛЕНИЕ: Спасибо за много хороших ответов, но я могу пометить только один как ОК
text-processing
sed
evachristine
источник
источник
sed '/^.\{,3\}$/d'
не работает с BSD СЭД:sed: 1: "/^.\{,3\}$/d": RE error: invalid repetition count(s)
. Версия sed -r синтаксически допустима, но не удаляет строки.Еще несколько вариаций:
или
или
или
или
или GNU awk:
источник
Вот решение Vim с использованием Ex-режима Vim и
global
команды.Это очень похоже на использование
sed
, только некоторые специальные символы ('{', '}') должны быть экранированы.Используя режим очень магического регулярного выражения Vim (\ v), этого можно избежать.
Смотрите также: помогите магии
Также иногда полезно сделать наоборот
vglobal
.удалил бы все, кроме строк до 3 символов.
источник
для непосредственного удаления строк вы можете:
Или BRE:
Если строка не содержит 4 или более символов, она удаляется.
Выполнение вышеуказанного в подзаголовке подстановки команд гарантирует, что он
grep
получит дескриптор чтения до того, как cat начнет запись в него, но также<<HEREDOC
будет гарантировать, что результат останется потоковым и не вызовет ошибок длины аргумента.источник
источник
Вы можете использовать
grep
:Если вы считаете начальные пробелы в длине строки:
Если вы не считаете начальные пробелы в строке:
источник