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