Вы можете использовать регулярное выражение, чтобы найти такие строки с помощью обычной функции поиска:
/\v(\|[^|]*){21,}
\v
гарантирует, что регулярное выражение работает независимо от значения параметра magic
(оно делает все не алфавитно-цифровые символы (кроме подчеркивания) специальными; я также использую его здесь, чтобы избежать необходимости ставить обратную косую черту перед (
, )
, {
и }
).
Если вы хотите увидеть все такие строки одновременно, то вы можете объединить их с помощью команды :g
:
:g/\v(\|[^|]*){21,}/p
Кстати, этот тип команды (от бывшего предшественника до vi) является источником для имени инструмента grep
(g/re/p
: re - сокращение от regexp).
Если ваши исходные данные «разделены каналом», то вам, вероятно, следует проверить, есть ли какие-либо значения со встроенными символами канала (возможно, путем экранирования (например, с префиксом с обратной косой чертой), удвоения или цитирования). Приведенный выше метод регулярных выражений может быть расширен для охвата большинства методов экранирования и удвоения, но для синтаксического анализа значений в кавычках обычно требуется мощная выразительная мощность, которую может предложить большинство языков регулярных выражений.